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 String
protected ElasticSearchAdminImpl
protected final Map
<String, ElasticSearchIndexConfig> protected com.google.common.util.concurrent.ListeningExecutorService
Fields inherited from class org.nuxeo.runtime.model.DefaultComponent
lastModified, name
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
dropAndInitIndex
(String indexName) Reinitialize an index.void
dropAndInitRepositoryIndex
(String repositoryName, boolean syncAlias) Reinitialize the index of a repository.void
flush()
Elasticsearch flush on all document indexes, triggers a lucene commit, empties the transaction log.void
flushRepositoryIndex
(String repositoryName) Elasticsearch flush on document index for a specific repository, triggers a lucene commit, empties the transaction log.int
The component notification order forComponent.start(ComponentContext)
.Retrieves theClient
that 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.void
initIndexes
(boolean dropIfExists) Initialize Elasticsearch indexes.protected void
void
initRepositoryIndexWithAliases
(String repositoryName) Creates a new index for the repository applying the mapping and settings.protected boolean
boolean
isReady()
void
optimize()
Elasticsearch runElasticSearchAdmin.optimizeRepositoryIndex(java.lang.String)
on all document indexes,void
optimizeIndex
(String indexName) Elasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.void
optimizeRepositoryIndex
(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> AFuture
that accepts callback on completion when all the indexing worker are done.void
refresh()
Refresh all document indexes, immediately after the operation occurs, so that the updated document appears in search results immediately.void
refreshRepositoryIndex
(String repositoryName) Refresh document index for the specific repository, immediately after the operation occurs, so that the updated document appears in search results immediately.void
registerContribution
(Object contribution, String extensionPoint, ComponentInstance contributor) protected void
void
start
(ComponentContext context) Start the component.void
stop
(ComponentContext context) Stop the component.void
syncSearchAndWriteAlias
(String searchIndexName) Make sure that the search alias point to the same index as the write alias.boolean
When 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, unregisterExtension
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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:
registerContribution
in classDefaultComponent
-
start
Description copied from interface:Component
Start the component. This method is called after all the components were resolved and activated- Specified by:
start
in interfaceComponent
- Overrides:
start
in classDefaultComponent
-
stop
Description copied from interface:Component
Stop the component.- Specified by:
stop
in interfaceComponent
- Overrides:
stop
in classDefaultComponent
-
isElasticsearchEnabled
protected boolean isElasticsearchEnabled() -
getApplicationStartedOrder
public int getApplicationStartedOrder()Description copied from interface:Component
The 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:
getApplicationStartedOrder
in interfaceComponent
- Returns:
- the order, 1000 by default
-
getClient
Description copied from interface:ElasticSearchAdmin
Retrieves theClient
that can be used to access Elasticsearch API- Specified by:
getClient
in interfaceElasticSearchAdmin
-
initIndexes
public void initIndexes(boolean dropIfExists) Description copied from interface:ElasticSearchAdmin
Initialize Elasticsearch indexes. Setup the index settings and mapping for each index that has been registered.- Specified by:
initIndexes
in interfaceElasticSearchAdmin
- Parameters:
dropIfExists
- if {true} remove an existing index
-
dropAndInitIndex
Description copied from interface:ElasticSearchAdmin
Reinitialize an index. This will drop the existing index, recreate it with its settings and mapping, the index will be empty.- Specified by:
dropAndInitIndex
in interfaceElasticSearchAdmin
-
dropAndInitRepositoryIndex
Description copied from interface:ElasticSearchAdmin
Reinitialize 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:
dropAndInitRepositoryIndex
in interfaceElasticSearchAdmin
-
initRepositoryIndexWithAliases
Description copied from interface:ElasticSearchAdmin
Creates 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:
initRepositoryIndexWithAliases
in interfaceElasticSearchAdmin
-
getRepositoryNames
Description copied from interface:ElasticSearchAdmin
List repository names that have Elasticsearch support.- Specified by:
getRepositoryNames
in interfaceElasticSearchAdmin
-
getIndexNameForRepository
Description copied from interface:ElasticSearchAdmin
Get the search index name associated with the repository name.- Specified by:
getIndexNameForRepository
in interfaceElasticSearchAdmin
-
getRepositoryForIndex
Description copied from interface:ElasticSearchAdmin
Gets the repository name associated with the index.- Specified by:
getRepositoryForIndex
in interfaceElasticSearchAdmin
-
getIndexNamesForType
Description copied from interface:ElasticSearchAdmin
Get the index names with the given type.- Specified by:
getIndexNamesForType
in interfaceElasticSearchAdmin
-
getIndexNameForType
Description copied from interface:ElasticSearchAdmin
Get the first search index name with the given type.- Specified by:
getIndexNameForType
in interfaceElasticSearchAdmin
-
getWriteIndexName
Description copied from interface:ElasticSearchAdmin
Returns the index to use for any write operations.- Specified by:
getWriteIndexName
in interfaceElasticSearchAdmin
-
getSecondaryWriteIndexName
Description copied from interface:ElasticSearchAdmin
Returns the secondary write index used during re-indexing with aliases.- Specified by:
getSecondaryWriteIndexName
in interfaceElasticSearchAdmin
- Returns:
- an index name or null if there is no re-indexing in progress.
-
syncSearchAndWriteAlias
Description copied from interface:ElasticSearchAdmin
Make sure that the search alias point to the same index as the write alias.- Specified by:
syncSearchAndWriteAlias
in interfaceElasticSearchAdmin
-
useExternalVersion
public boolean useExternalVersion()Description copied from interface:ElasticSearchAdmin
When 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:
useExternalVersion
in interfaceElasticSearchAdmin
-
prepareWaitForIndexing
Description copied from interface:ElasticSearchAdmin
AFuture
that accepts callback on completion when all the indexing worker are done.- Specified by:
prepareWaitForIndexing
in interfaceElasticSearchAdmin
-
initListenerThreadPool
protected void initListenerThreadPool() -
shutdownListenerThreadPool
protected void shutdownListenerThreadPool() -
refresh
public void refresh()Description copied from interface:ElasticSearchAdmin
Refresh 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:
refresh
in interfaceElasticSearchAdmin
-
refreshRepositoryIndex
Description copied from interface:ElasticSearchAdmin
Refresh 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:
refreshRepositoryIndex
in interfaceElasticSearchAdmin
-
flush
public void flush()Description copied from interface:ElasticSearchAdmin
Elasticsearch flush on all document indexes, triggers a lucene commit, empties the transaction log. Data is flushed to disk.- Specified by:
flush
in interfaceElasticSearchAdmin
-
flushRepositoryIndex
Description copied from interface:ElasticSearchAdmin
Elasticsearch flush on document index for a specific repository, triggers a lucene commit, empties the transaction log. Data is flushed to disk.- Specified by:
flushRepositoryIndex
in interfaceElasticSearchAdmin
-
optimize
public void optimize()Description copied from interface:ElasticSearchAdmin
Elasticsearch runElasticSearchAdmin.optimizeRepositoryIndex(java.lang.String)
on all document indexes,- Specified by:
optimize
in interfaceElasticSearchAdmin
-
optimizeRepositoryIndex
Description copied from interface:ElasticSearchAdmin
Elasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.- Specified by:
optimizeRepositoryIndex
in interfaceElasticSearchAdmin
-
optimizeIndex
Description copied from interface:ElasticSearchAdmin
Elasticsearch optimize operation allows to reduce the number of segments to one, Note that this can potentially be a very heavy operation.- Specified by:
optimizeIndex
in interfaceElasticSearchAdmin
-
isReady
public boolean isReady()
-