private LuceneAnalysisDefinitionProvider getLuceneAnalyzerDefinitionProvider() { // Uses a Service so that integrators can inject alternative Lucene Analyzer definition providers try ( ServiceReference<LuceneAnalysisDefinitionSourceService> serviceRef = serviceManager.requestReference( LuceneAnalysisDefinitionSourceService.class ) ) { return serviceRef.get().getLuceneAnalyzerDefinitionProvider(); } }
@Override public void initializeReferences(Collection<AnalyzerReference> analyzerReferences, Map<String, AnalyzerDef> mappingAnalyzerDefinitions, Collection<AnalyzerReference> normalizerReferences, Map<String, NormalizerDef> mappingNormalizerDefinitions) { try ( ServiceReference<ElasticsearchAnalyzerDefinitionTranslator> translatorReference = serviceManager.requestReference( ElasticsearchAnalyzerDefinitionTranslator.class ) ) { ElasticsearchAnalyzerDefinitionTranslator translator = translatorReference.get(); // First, create a registry containing all relevant definitions ElasticsearchAnalysisDefinitionRegistry definitionRegistry = createDefinitionRegistry( analyzerReferences, mappingAnalyzerDefinitions, normalizerReferences, mappingNormalizerDefinitions, defaultDefinitionRegistry, translator ); // When all definitions are known and translated, actually initialize the references Stream.concat( analyzerReferences.stream(), normalizerReferences.stream() ) .map( this::getUninitializedReference ) .filter( Objects::nonNull ) .forEach( r -> r.initialize( definitionRegistry, translator ) ); } }
private LuceneAnalysisDefinitionProvider getLuceneAnalyzerDefinitionProvider() { // Uses a Service so that integrators can inject alternative Lucene Analyzer definition providers try ( ServiceReference<LuceneAnalysisDefinitionSourceService> serviceRef = serviceManager.requestReference( LuceneAnalysisDefinitionSourceService.class ) ) { return serviceRef.get().getLuceneAnalyzerDefinitionProvider(); } }
private QueryDescriptor createQueryDescriptor(Query luceneQuery, IndexedTypeSet entityTypes) { QueryDescriptor descriptor = null; if ( queryTranslatorPresent ) { try ( ServiceReference<LuceneQueryTranslator> translator = getServiceManager().requestReference( LuceneQueryTranslator.class ) ) { if ( translator.get().conversionRequired( entityTypes ) ) { descriptor = translator.get().convertLuceneQuery( luceneQuery ); } } } if ( descriptor == null ) { descriptor = new LuceneQueryDescriptor( luceneQuery ); } return descriptor; }
private QueryDescriptor createQueryDescriptor(Query luceneQuery, IndexedTypeSet entityTypes) { QueryDescriptor descriptor = null; if ( queryTranslatorPresent ) { try (ServiceReference<LuceneQueryTranslator> translator = getServiceManager().requestReference( LuceneQueryTranslator.class )) { if ( translator.get().conversionRequired( entityTypes ) ) { descriptor = translator.get().convertLuceneQuery( luceneQuery ); } } } if ( descriptor == null ) { descriptor = new LuceneQueryDescriptor( luceneQuery ); } return descriptor; }
@Override public Runnable createRunnable(int i) throws Exception { return new DeserializingThread( serializer.get(), serializedModel ); } }
@Override public Runnable createRunnable(int i) throws Exception { return new SerializingThread( serializer.get(), buildLuceneWorkList() ); } }
@Override protected QueueConnectionFactory initializeJMSQueueConnectionFactory(Properties properties) { final String jmsConnectionFactoryName = properties.getProperty( JMS_CONNECTION_FACTORY ); try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( jmsConnectionFactoryName ); return (QueueConnectionFactory) located; } catch (RuntimeException e) { throw log.jmsQueueFactoryLookupException( jmsConnectionFactoryName, getIndexName(), e ); } }
@Override protected QueueConnectionFactory initializeJMSQueueConnectionFactory(Properties properties) { final String jmsConnectionFactoryName = properties.getProperty( JMS_CONNECTION_FACTORY ); try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( jmsConnectionFactoryName ); return (QueueConnectionFactory) located; } catch (RuntimeException e) { throw log.jmsQueueFactoryLookupException( jmsConnectionFactoryName, getIndexName(), e ); } }
private void deleteIndexIfExisting() { // Not actually needed, but do it to avoid cluttering the ES log if ( clientReference.get().executeRequest( new IndicesExists.Builder( actualIndexName ).build(), 404 ).getResponseCode() == 404 ) { return; } try { clientReference.get().executeRequest( new DeleteIndex.Builder( actualIndexName ).build() ); } catch (SearchException e) { // ignoring deletion of non-existing index if ( !e.getMessage().contains( "index_not_found_exception" ) ) { throw e; } } }
SearchResult runSearch() { try ( ServiceReference<JestClient> client = getExtendedSearchIntegrator().getServiceManager().requestReference( JestClient.class ) ) { return client.get().executeRequest( search ); } }
private void createIndex() { CreateIndex createIndex = new CreateIndex.Builder( actualIndexName ) .build(); clientReference.get().executeRequest( createIndex ); waitForIndexCreation(); }
@Override public void initialize(String indexName, Properties properties, Similarity similarity, WorkerBuildContext context) { this.serviceManager = context.getServiceManager(); this.indexName = getIndexName( indexName, properties ); try ( ServiceReference<ConfigurationPropertiesProvider> propertiesProvider = serviceManager.requestReference( ConfigurationPropertiesProvider.class ) ) { this.indexManagementStrategy = getIndexManagementStrategy( propertiesProvider.get().getProperties() ); this.indexManagementWaitTimeout = getIndexManagementWaitTimeout( propertiesProvider.get().getProperties() ); } this.actualIndexName = IndexNameNormalizer.getElasticsearchIndexName( this.indexName ); this.similarity = similarity; this.backend = BackendFactory.createBackend( this, context, properties ); }
@Override protected Queue initializeJMSQueue(QueueConnectionFactory factory, Properties properties) { try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( getJmsQueueName() ); return (Queue) located; } catch (RuntimeException e) { throw log.jmsQueueLookupException( getJmsQueueName(), getIndexName(), e ); } }
@Override protected Queue initializeJMSQueue(QueueConnectionFactory factory, Properties properties) { try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( getJmsQueueName() ); return (Queue) located; } catch (RuntimeException e) { throw log.jmsQueueLookupException( getJmsQueueName(), getIndexName(), e ); } }
private void waitForIndexCreation() { Builder healthBuilder = new Health.Builder() .setParameter( "wait_for_status", "green" ) .setParameter( "timeout", indexManagementWaitTimeout ); Health health = new Health( healthBuilder ) { @Override protected String buildURI() { return super.buildURI() + actualIndexName; } }; JestResult result = clientReference.get().executeRequest( health ); if ( !result.isSucceeded() ) { throw new SearchException( "Index " + actualIndexName + " wasn't created in time; Reason: " + result.getErrorMessage() ); } }
private boolean isJGroupsMaster(TestResourceManager manager) { ExtendedSearchIntegrator integrator = manager.getExtendedSearchIntegrator(); try ( ServiceReference<NodeSelectorService> service = integrator.getServiceManager().requestReference( NodeSelectorService.class ) ) { NodeSelectorStrategy nodeSelector = service.get().getMasterNodeSelector( TShirt.INDEX_NAME ); return nodeSelector.isIndexOwnerLocal(); } }
@Test public void concurrentDeserialization() throws Exception { try ( ServiceReference<LuceneWorkSerializer> serializer = extractSerializer() ) { final byte[] serializedModel = serializer.get().toSerializedModel( buildLuceneWorkList() ); final ConcurrentRunner runner = new ConcurrentRunner( new TaskFactory() { @Override public Runnable createRunnable(int i) throws Exception { return new DeserializingThread( serializer.get(), serializedModel ); } } ); runner.execute(); } }
@Override public int getNumberOfDocumentsInIndex(String indexName) { ServiceManager serviceManager = resourceManager.getExtendedSearchIntegrator().getServiceManager(); try ( ServiceReference<ElasticsearchService> esService = serviceManager.requestReference( ElasticsearchService.class ) ) { CountWork work = new CountWork.Builder( ElasticsearchIndexNameNormalizer.getElasticsearchIndexName( indexName ) ) .build(); return esService.get().getWorkProcessor().executeSyncUnsafe( work ); } }