Class OpenSearchIndexManagerImpl
java.lang.Object
com.atlassian.confluence.plugins.opensearch.indexmanager.OpenSearchIndexManagerImpl
- All Implemented Interfaces:
OpenSearchIndexManager
,FieldMappings.FieldMappingWriter
,org.springframework.beans.factory.DisposableBean
public class OpenSearchIndexManagerImpl
extends Object
implements OpenSearchIndexManager, FieldMappings.FieldMappingWriter
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.atlassian.confluence.plugins.opensearch.indexmanager.OpenSearchIndexManager
OpenSearchIndexManager.StagingIndex
-
Constructor Summary
ConstructorDescriptionOpenSearchIndexManagerImpl
(Index index, Supplier<org.opensearch.client.opensearch.indices.IndexSettingsAnalysis> analysisSettingsSupplier, org.opensearch.client.opensearch.OpenSearchClient client, OpenSearchConfig openSearchConfig, com.atlassian.event.api.EventPublisher eventPublisher, OpenSearchFieldMappingMapper fieldMappingMapper) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
createNewIndex
(String indexName, String... aliases) Create a new staging index, i.e.protected void
deleteIndexes
(List<String> indexNames) void
destroy()
void
Create an index on OpenSearch based on the provided settingsboolean
exists()
getAlias()
Gets the alias for accessing the OpenSearch index.protected org.opensearch.client.opensearch.indices.IndexSettingsAnalysis
Get or add field mappings on this index.getIndex()
void
onIndexCreatedRemotely
(ClusterEventWrapper eventWrapper) When index gets recreated by another node, make sure all mappings registered on this node are present in the index.boolean
putIfAbsent
(FieldMapping mapping) Create the specified field mapping on the underlying index if it is not already present.protected boolean
putIfAbsent
(FieldMapping mapping, String indexName) void
recreate()
Create a new index on OpenSearch based on the provided settings.
-
Constructor Details
-
OpenSearchIndexManagerImpl
public OpenSearchIndexManagerImpl(Index index, Supplier<org.opensearch.client.opensearch.indices.IndexSettingsAnalysis> analysisSettingsSupplier, org.opensearch.client.opensearch.OpenSearchClient client, OpenSearchConfig openSearchConfig, com.atlassian.event.api.EventPublisher eventPublisher, OpenSearchFieldMappingMapper fieldMappingMapper)
-
-
Method Details
-
recreate
Description copied from interface:OpenSearchIndexManager
Create a new index on OpenSearch based on the provided settings. If it already exists, it will be deleted first.- Specified by:
recreate
in interfaceOpenSearchIndexManager
- Throws:
IOException
-
createStagingIndex
Description copied from interface:OpenSearchIndexManager
Create a new staging index, i.e. an index that's not pointed to by the alias.- Specified by:
createStagingIndex
in interfaceOpenSearchIndexManager
- Returns:
- the new staging index
- Throws:
IOException
-
putIfAbsent
Description copied from interface:FieldMappings.FieldMappingWriter
Create the specified field mapping on the underlying index if it is not already present.- Specified by:
putIfAbsent
in interfaceFieldMappings.FieldMappingWriter
- Parameters:
mapping
- a mapping to add- Returns:
- true if the mapping was created on the index, or false if it was already present.
- Throws:
SearchIndexAccessException
- if the mapping failed to be created
-
getIndex
- Specified by:
getIndex
in interfaceOpenSearchIndexManager
- Returns:
- the index managed by this instance
-
getAlias
Description copied from interface:OpenSearchIndexManager
Gets the alias for accessing the OpenSearch index. Note: each index is created behind an alias to improve resiliency during reindexing. On system indexes, it allows green/blue reindexing to avoid downtime (seeOpenSearchIndexManager.StagingIndex
). On custom index, it tolerates failures when deleting the old index (e.g. because snapshotting is taking place).- Specified by:
getAlias
in interfaceOpenSearchIndexManager
- Returns:
- the alias
-
getFieldMappings
Description copied from interface:OpenSearchIndexManager
Get or add field mappings on this index.- Specified by:
getFieldMappings
in interfaceOpenSearchIndexManager
- Returns:
- field mappings
-
ensureExists
Description copied from interface:OpenSearchIndexManager
Create an index on OpenSearch based on the provided settings- Specified by:
ensureExists
in interfaceOpenSearchIndexManager
- Throws:
IOException
-
exists
- Specified by:
exists
in interfaceOpenSearchIndexManager
- Returns:
- true if the index exists, or false if it does not exist
- Throws:
IOException
-
createNewIndex
- Throws:
IOException
-
deleteIndexes
- Throws:
IOException
-
onIndexCreatedRemotely
When index gets recreated by another node, make sure all mappings registered on this node are present in the index. This is to prevent rare cases that can result in fields getting created on OpenSearch index with auto-generated (dynamic) mapping.- Parameters:
eventWrapper
-
-
putIfAbsent
protected boolean putIfAbsent(FieldMapping mapping, String indexName) throws SearchIndexAccessException - Throws:
SearchIndexAccessException
-
getAnalysisSettings
protected org.opensearch.client.opensearch.indices.IndexSettingsAnalysis getAnalysisSettings() -
destroy
public void destroy()- Specified by:
destroy
in interfaceorg.springframework.beans.factory.DisposableBean
-