Class ElasticsearchAccess
- java.lang.Object
-
- fr.gouv.vitam.common.database.server.elasticsearch.ElasticsearchAccess
-
- All Implemented Interfaces:
DatabaseConnection
- Direct Known Subclasses:
ElasticsearchAccessFunctionalAdmin,ElasticsearchAccessMetadata,LogbookElasticsearchAccess
public class ElasticsearchAccess extends java.lang.Object implements DatabaseConnection
Elasticsearch Access
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringclusterNamestatic intDEFAULT_LIMIT_SCROLLdefault limit scroll sizestatic intDEFAULT_SCROLL_TIMEOUTdefault limit scroll timeoutprotected java.util.List<ElasticsearchNode>nodesstatic java.lang.StringSCROLL_ACTIVATE_KEYWORDKEYWORD to activate scroll
-
Constructor Summary
Constructors Constructor Description ElasticsearchAccess(java.lang.String clusterName, java.util.List<ElasticsearchNode> nodes)Create an ElasticSearch access
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancheckConnection()Check the connection of the databasevoidclearScroll(java.lang.String scrollId)voidclose()Close the ElasticSearch connectionbooleancreateIndex(java.lang.String indexName, java.lang.String mapping)booleancreateIndex(java.lang.String aliasName, java.lang.String indexName, java.lang.String mapping)java.util.Map<java.lang.String,java.lang.String>createIndexAndAliasIfAliasNotExists(java.lang.String collectionName, java.lang.String mapping)java.util.Map<java.lang.String,java.lang.String>createIndexAndAliasIfAliasNotExists(java.lang.String collectionName, java.lang.String mapping, java.lang.Integer tenantId)java.lang.StringcreateIndexWithoutAlias(java.lang.String collectionName, java.lang.String mapping, java.lang.Integer tenantId)voiddelete(java.lang.String collectionName, java.util.List<java.lang.String> ids, java.lang.Integer tenant)booleandeleteIndex(java.lang.String indexFullName)voiddeleteIndexByAlias(java.lang.String collectionName, java.lang.Integer tenantId)booleanexistsAlias(java.lang.String aliasName)booleanexistsIndex(java.lang.String indexName)org.elasticsearch.client.GetAliasesResponsegetAlias(java.lang.String alias)org.elasticsearch.client.RestHighLevelClientgetClient()java.lang.StringgetClusterName()java.lang.StringgetInfo()Get information on a Databasejava.util.List<ElasticsearchNode>getNodes()voidindexEntries(java.lang.String collectionName, java.lang.Integer tenantId, java.util.Collection<? extends org.bson.Document> documents)Add a set of entries in the ElasticSearch index.<T extends VitamDocument>
voidindexEntry(java.lang.String collectionName, java.lang.Integer tenantId, java.lang.String id, T vitamDocument)Add an entry in the ElasticSearch indexvoidpurgeIndex(java.lang.String indexName)voidpurgeIndex(java.lang.String collectionName, java.lang.Integer tenant)voidrefreshIndex(java.lang.String collectionName, java.lang.Integer tenantId)refresh an indexorg.elasticsearch.action.search.SearchResponsesearch(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query)org.elasticsearch.action.search.SearchResponsesearch(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter)org.elasticsearch.action.search.SearchResponsesearch(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter, java.lang.String[] esProjection, java.util.List<org.elasticsearch.search.sort.SortBuilder> sorts, int offset, java.lang.Integer limit)org.elasticsearch.action.search.SearchResponsesearch(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter, java.lang.String[] esProjection, java.util.List<org.elasticsearch.search.sort.SortBuilder> sorts, int offset, java.lang.Integer limit, java.util.List<org.elasticsearch.search.aggregations.AggregationBuilder> facets, java.lang.String scrollId, java.lang.Integer scrollTimeout)booleanswitchAliasIndex(java.lang.String aliasName, java.lang.String oldIndex, java.lang.String newIndexName)voidswitchIndex(java.lang.String aliasName, java.lang.String indexNameToSwitchWith)<T extends VitamDocument>
voidupdateEntry(java.lang.String collectionName, java.lang.Integer tenantId, java.lang.String id, T vitamDocument)Update one element fully
-
-
-
Field Detail
-
DEFAULT_SCROLL_TIMEOUT
public static final int DEFAULT_SCROLL_TIMEOUT
default limit scroll timeout- See Also:
- Constant Field Values
-
DEFAULT_LIMIT_SCROLL
public static final int DEFAULT_LIMIT_SCROLL
default limit scroll size- See Also:
- Constant Field Values
-
SCROLL_ACTIVATE_KEYWORD
public static final java.lang.String SCROLL_ACTIVATE_KEYWORD
KEYWORD to activate scroll- See Also:
- Constant Field Values
-
clusterName
protected final java.lang.String clusterName
-
nodes
protected final java.util.List<ElasticsearchNode> nodes
-
-
Constructor Detail
-
ElasticsearchAccess
public ElasticsearchAccess(java.lang.String clusterName, java.util.List<ElasticsearchNode> nodes) throws VitamException, java.io.IOExceptionCreate an ElasticSearch access- Parameters:
clusterName- the name of the Clusternodes- the elasticsearch nodes- Throws:
VitamException- when elasticseach node list is emptyjava.io.IOException
-
-
Method Detail
-
purgeIndex
public void purgeIndex(java.lang.String collectionName, java.lang.Integer tenant)
-
existsIndex
public boolean existsIndex(java.lang.String indexName) throws java.io.IOException- Throws:
java.io.IOException
-
getAlias
public org.elasticsearch.client.GetAliasesResponse getAlias(java.lang.String alias) throws java.io.IOException- Throws:
java.io.IOException
-
createIndex
public boolean createIndex(java.lang.String aliasName, java.lang.String indexName, java.lang.String mapping) throws java.io.IOException- Throws:
java.io.IOException
-
createIndex
public boolean createIndex(java.lang.String indexName, java.lang.String mapping) throws java.io.IOException- Throws:
java.io.IOException
-
existsAlias
public boolean existsAlias(java.lang.String aliasName) throws java.io.IOException- Throws:
java.io.IOException
-
switchAliasIndex
public boolean switchAliasIndex(java.lang.String aliasName, java.lang.String oldIndex, java.lang.String newIndexName) throws java.io.IOException- Throws:
java.io.IOException
-
purgeIndex
public void purgeIndex(java.lang.String indexName)
-
refreshIndex
public final void refreshIndex(java.lang.String collectionName, java.lang.Integer tenantId) throws java.io.IOException, DatabaseExceptionrefresh an index- Parameters:
collectionName- the working metadata collection nametenantId- the tenant for operation- Throws:
java.io.IOExceptionDatabaseException
-
indexEntry
public final <T extends VitamDocument> void indexEntry(java.lang.String collectionName, java.lang.Integer tenantId, java.lang.String id, T vitamDocument) throws DatabaseException
Add an entry in the ElasticSearch index- Parameters:
collectionName-tenantId-id-vitamDocument-- Throws:
DatabaseException
-
indexEntries
public final void indexEntries(java.lang.String collectionName, java.lang.Integer tenantId, java.util.Collection<? extends org.bson.Document> documents) throws DatabaseExceptionAdd a set of entries in the ElasticSearch index.
Used in reload from scratch.- Parameters:
collectionName- collection of indextenantId- tenant Iddocuments- documents to index- Throws:
DatabaseException
-
updateEntry
public <T extends VitamDocument> void updateEntry(java.lang.String collectionName, java.lang.Integer tenantId, java.lang.String id, T vitamDocument) throws DatabaseException
Update one element fully- Parameters:
collectionName-tenantId-id-vitamDocument- full document to update- Throws:
DatabaseException
-
search
public final org.elasticsearch.action.search.SearchResponse search(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query) throws DatabaseException, BadRequestException- Throws:
DatabaseExceptionBadRequestException
-
search
public final org.elasticsearch.action.search.SearchResponse search(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter) throws DatabaseException, BadRequestException- Throws:
DatabaseExceptionBadRequestException
-
search
public final org.elasticsearch.action.search.SearchResponse search(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter, java.lang.String[] esProjection, java.util.List<org.elasticsearch.search.sort.SortBuilder> sorts, int offset, java.lang.Integer limit) throws DatabaseException, BadRequestException- Throws:
DatabaseExceptionBadRequestException
-
search
public final org.elasticsearch.action.search.SearchResponse search(java.lang.String collectionName, java.lang.Integer tenantId, org.elasticsearch.index.query.QueryBuilder query, org.elasticsearch.index.query.QueryBuilder filter, java.lang.String[] esProjection, java.util.List<org.elasticsearch.search.sort.SortBuilder> sorts, int offset, java.lang.Integer limit, java.util.List<org.elasticsearch.search.aggregations.AggregationBuilder> facets, java.lang.String scrollId, java.lang.Integer scrollTimeout) throws DatabaseException, BadRequestException- Throws:
DatabaseExceptionBadRequestException
-
clearScroll
public void clearScroll(java.lang.String scrollId) throws DatabaseException- Throws:
DatabaseException
-
close
public void close()
Close the ElasticSearch connection
-
getClusterName
public java.lang.String getClusterName()
- Returns:
- the Cluster Name
-
getClient
public org.elasticsearch.client.RestHighLevelClient getClient()
- Returns:
- the client
-
getNodes
public java.util.List<ElasticsearchNode> getNodes()
- Returns:
- the nodes
-
checkConnection
public boolean checkConnection()
Description copied from interface:DatabaseConnectionCheck the connection of the database- Specified by:
checkConnectionin interfaceDatabaseConnection- Returns:
- True if the connection is active
-
getInfo
public java.lang.String getInfo()
Description copied from interface:DatabaseConnectionGet information on a Database- Specified by:
getInfoin interfaceDatabaseConnection- Returns:
- information on the database
-
createIndexAndAliasIfAliasNotExists
public final java.util.Map<java.lang.String,java.lang.String> createIndexAndAliasIfAliasNotExists(java.lang.String collectionName, java.lang.String mapping)
-
createIndexAndAliasIfAliasNotExists
public final java.util.Map<java.lang.String,java.lang.String> createIndexAndAliasIfAliasNotExists(java.lang.String collectionName, java.lang.String mapping, java.lang.Integer tenantId)
-
createIndexWithoutAlias
public final java.lang.String createIndexWithoutAlias(java.lang.String collectionName, java.lang.String mapping, java.lang.Integer tenantId) throws DatabaseException, java.io.IOException- Throws:
DatabaseExceptionjava.io.IOException
-
switchIndex
public final void switchIndex(java.lang.String aliasName, java.lang.String indexNameToSwitchWith) throws DatabaseException, java.io.IOException- Throws:
DatabaseExceptionjava.io.IOException
-
deleteIndexByAlias
public final void deleteIndexByAlias(java.lang.String collectionName, java.lang.Integer tenantId)
-
deleteIndex
public final boolean deleteIndex(java.lang.String indexFullName)
-
delete
public void delete(java.lang.String collectionName, java.util.List<java.lang.String> ids, java.lang.Integer tenant) throws DatabaseException- Throws:
DatabaseException
-
-