Package org.nuxeo.elasticsearch
Class ElasticSearchComponent
java.lang.Object
org.nuxeo.runtime.model.DefaultComponent
org.nuxeo.elasticsearch.ElasticSearchComponent
- All Implemented Interfaces:
ElasticSearchAdmin,Adaptable,Component,Extensible,TimestampedService
Component used to configure and manage ElasticSearch integration
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected ElasticSearchAdminImplprotected final Map<String, ElasticSearchIndexConfig> protected com.google.common.util.concurrent.ListeningExecutorServiceFields inherited from class org.nuxeo.runtime.model.DefaultComponent
lastModified, name -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddropAndInitIndex(String indexName) Reinitialize an index.voiddropAndInitRepositoryIndex(String repositoryName, boolean syncAlias) Reinitialize the index of a repository.voidflush()Elasticsearch flush on all document indexes, triggers a lucene commit, empties the transaction log.voidflushRepositoryIndex(String repositoryName) Elasticsearch flush on document index for a specific repository, triggers a lucene commit, empties the transaction log.intThe component notification order forComponent.start(ComponentContext).Retrieves theClientthat can be used to access Elasticsearch APIgetIndexNameForRepository(String repositoryName) Get the search index name associated with the repository name.getIndexNameForType(String type) Get the first search index name with the given type.getIndexNamesForType(String type) Get the index names with the given type.getRepositoryForIndex(String indexName) Gets the repository name associated with the index.List repository names that have Elasticsearch support.getSecondaryWriteIndexName(String searchIndexName) Returns the secondary write index used during re-indexing with aliases.getWriteIndexName(String searchIndexName) Returns the index to use for any write operations.voidinitIndexes(boolean dropIfExists) Initialize Elasticsearch indexes.protected voidvoidinitRepositoryIndexWithAliases(String repositoryName) Creates a new index for the repository applying the mapping and settings.protected booleanbooleanisReady()voidoptimize()Elasticsearch runElasticSearchAdmin.optimizeRepositoryIndex(java.lang.String)on all document indexes,voidoptimizeIndex(String indexName) Elasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.voidoptimizeRepositoryIndex(String repositoryName) Elasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.com.google.common.util.concurrent.ListenableFuture<Boolean> AFuturethat accepts callback on completion when all the indexing worker are done.voidrefresh()Refresh all document indexes, immediately after the operation occurs, so that the updated document appears in search results immediately.voidrefreshRepositoryIndex(String repositoryName) Refresh document index for the specific repository, immediately after the operation occurs, so that the updated document appears in search results immediately.voidregisterContribution(Object contribution, String extensionPoint, ComponentInstance contributor) protected voidvoidstart(ComponentContext context) Start the component.voidstop(ComponentContext context) Stop the component.voidsyncSearchAndWriteAlias(String searchIndexName) Make sure that the search alias point to the same index as the write alias.booleanWhen true use an external version for Elasticsearch document, this enable an optimistic concurrency control ensuring that an older version of a document never overwrites a newer version.Methods inherited from class org.nuxeo.runtime.model.DefaultComponent
activate, addRuntimeMessage, addRuntimeMessage, deactivate, getAdapter, getDescriptor, getDescriptors, getLastModified, getRegistry, register, registerExtension, setLastModified, setModifiedNow, setName, unregister, unregisterContribution, unregisterExtensionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.nuxeo.elasticsearch.api.ElasticSearchAdmin
dropAndInitRepositoryIndex
-
Field Details
-
EP_INDEX
- See Also:
-
indexConfig
-
esa
-
waiterExecutorService
protected com.google.common.util.concurrent.ListeningExecutorService waiterExecutorService
-
-
Constructor Details
-
ElasticSearchComponent
public ElasticSearchComponent()
-
-
Method Details
-
registerContribution
public void registerContribution(Object contribution, String extensionPoint, ComponentInstance contributor) - Overrides:
registerContributionin classDefaultComponent
-
start
Description copied from interface:ComponentStart the component. This method is called after all the components were resolved and activated- Specified by:
startin interfaceComponent- Overrides:
startin classDefaultComponent
-
stop
Description copied from interface:ComponentStop the component.- Specified by:
stopin interfaceComponent- Overrides:
stopin classDefaultComponent
-
isElasticsearchEnabled
protected boolean isElasticsearchEnabled() -
getApplicationStartedOrder
public int getApplicationStartedOrder()Description copied from interface:ComponentThe component notification order forComponent.start(ComponentContext).Components are notified in increasing order. Order 1000 is the default order for components that don't care. Order 100 is the repository initialization.
- Specified by:
getApplicationStartedOrderin interfaceComponent- Returns:
- the order, 1000 by default
-
getClient
Description copied from interface:ElasticSearchAdminRetrieves theClientthat can be used to access Elasticsearch API- Specified by:
getClientin interfaceElasticSearchAdmin
-
initIndexes
public void initIndexes(boolean dropIfExists) Description copied from interface:ElasticSearchAdminInitialize Elasticsearch indexes. Setup the index settings and mapping for each index that has been registered.- Specified by:
initIndexesin interfaceElasticSearchAdmin- Parameters:
dropIfExists- if {true} remove an existing index
-
dropAndInitIndex
Description copied from interface:ElasticSearchAdminReinitialize an index. This will drop the existing index, recreate it with its settings and mapping, the index will be empty.- Specified by:
dropAndInitIndexin interfaceElasticSearchAdmin
-
dropAndInitRepositoryIndex
Description copied from interface:ElasticSearchAdminReinitialize the index of a repository. This will drop the existing index, recreate it with its settings and mapping, the index will be empty. When syncAlias is false then search alias is not updated with the new index, you need to explicitly callElasticSearchAdmin.syncSearchAndWriteAlias(String)- Specified by:
dropAndInitRepositoryIndexin interfaceElasticSearchAdmin
-
initRepositoryIndexWithAliases
Description copied from interface:ElasticSearchAdminCreates a new index for the repository applying the mapping and settings. Update the write alias to point to this new index. The search alias is updated to the new index only for the initial creation. Otherwise, there are two write indexes until an explicit call toElasticSearchAdmin.syncSearchAndWriteAlias(String).- Specified by:
initRepositoryIndexWithAliasesin interfaceElasticSearchAdmin
-
getRepositoryNames
Description copied from interface:ElasticSearchAdminList repository names that have Elasticsearch support.- Specified by:
getRepositoryNamesin interfaceElasticSearchAdmin
-
getIndexNameForRepository
Description copied from interface:ElasticSearchAdminGet the search index name associated with the repository name.- Specified by:
getIndexNameForRepositoryin interfaceElasticSearchAdmin
-
getRepositoryForIndex
Description copied from interface:ElasticSearchAdminGets the repository name associated with the index.- Specified by:
getRepositoryForIndexin interfaceElasticSearchAdmin
-
getIndexNamesForType
Description copied from interface:ElasticSearchAdminGet the index names with the given type.- Specified by:
getIndexNamesForTypein interfaceElasticSearchAdmin
-
getIndexNameForType
Description copied from interface:ElasticSearchAdminGet the first search index name with the given type.- Specified by:
getIndexNameForTypein interfaceElasticSearchAdmin
-
getWriteIndexName
Description copied from interface:ElasticSearchAdminReturns the index to use for any write operations.- Specified by:
getWriteIndexNamein interfaceElasticSearchAdmin
-
getSecondaryWriteIndexName
Description copied from interface:ElasticSearchAdminReturns the secondary write index used during re-indexing with aliases.- Specified by:
getSecondaryWriteIndexNamein interfaceElasticSearchAdmin- Returns:
- an index name or null if there is no re-indexing in progress.
-
syncSearchAndWriteAlias
Description copied from interface:ElasticSearchAdminMake sure that the search alias point to the same index as the write alias.- Specified by:
syncSearchAndWriteAliasin interfaceElasticSearchAdmin
-
useExternalVersion
public boolean useExternalVersion()Description copied from interface:ElasticSearchAdminWhen true use an external version for Elasticsearch document, this enable an optimistic concurrency control ensuring that an older version of a document never overwrites a newer version.- Specified by:
useExternalVersionin interfaceElasticSearchAdmin
-
prepareWaitForIndexing
Description copied from interface:ElasticSearchAdminAFuturethat accepts callback on completion when all the indexing worker are done.- Specified by:
prepareWaitForIndexingin interfaceElasticSearchAdmin
-
initListenerThreadPool
protected void initListenerThreadPool() -
shutdownListenerThreadPool
protected void shutdownListenerThreadPool() -
refresh
public void refresh()Description copied from interface:ElasticSearchAdminRefresh all document indexes, immediately after the operation occurs, so that the updated document appears in search results immediately. There is no fsync thus doesn't guarantee durability.- Specified by:
refreshin interfaceElasticSearchAdmin
-
refreshRepositoryIndex
Description copied from interface:ElasticSearchAdminRefresh document index for the specific repository, immediately after the operation occurs, so that the updated document appears in search results immediately. There is no fsync thus doesn't guarantee durability.- Specified by:
refreshRepositoryIndexin interfaceElasticSearchAdmin
-
flush
public void flush()Description copied from interface:ElasticSearchAdminElasticsearch flush on all document indexes, triggers a lucene commit, empties the transaction log. Data is flushed to disk.- Specified by:
flushin interfaceElasticSearchAdmin
-
flushRepositoryIndex
Description copied from interface:ElasticSearchAdminElasticsearch flush on document index for a specific repository, triggers a lucene commit, empties the transaction log. Data is flushed to disk.- Specified by:
flushRepositoryIndexin interfaceElasticSearchAdmin
-
optimize
public void optimize()Description copied from interface:ElasticSearchAdminElasticsearch runElasticSearchAdmin.optimizeRepositoryIndex(java.lang.String)on all document indexes,- Specified by:
optimizein interfaceElasticSearchAdmin
-
optimizeRepositoryIndex
Description copied from interface:ElasticSearchAdminElasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.- Specified by:
optimizeRepositoryIndexin interfaceElasticSearchAdmin
-
optimizeIndex
Description copied from interface:ElasticSearchAdminElasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.- Specified by:
optimizeIndexin interfaceElasticSearchAdmin
-
isReady
public boolean isReady()
-