Class ElasticsearchIndex
java.lang.Object
org.eclipse.rdf4j.sail.lucene.AbstractSearchIndex
org.eclipse.rdf4j.sail.elasticsearch.ElasticsearchIndex
- All Implemented Interfaces:
SearchIndex
Requires an Elasticsearch cluster with the DeleteByQuery plugin.
Note that, while RDF4J is licensed under the EDL, several ElasticSearch dependencies are licensed under the Elastic
license or the SSPL, which may have implications for some projects.
Please consult the ElasticSearch website and license FAQ for more information.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringSet the parameter "documentType=" to specify the document type to use.static final Stringstatic final Stringstatic final Stringstatic final StringSet the parameter "indexName=" to specify the index to use.static final Stringstatic final StringSet the parameter "transport=" to specify the address of the cluster to use (e.g.static final StringSet the parameter "waitForActiveShards=" to configure ifinitializationshould wait until the specified number of shards to be active.static final StringSet the parameter "waitForNoRelocatingShards=true|false" to configure ifinitializationshould wait until the are no relocating shards.static final StringSet the parameter "waitForNodes=" to configure ifinitializationshould wait until the specified number of nodes are available.static final StringDeprecated.static final StringSet the parameter "waitForStatus=" to configure ifinitializationshould wait for a particular health status.Fields inherited from class org.eclipse.rdf4j.sail.lucene.AbstractSearchIndex
maxDocs, wktFields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoidbegin()Begins a transaction.voidclear()Clears the indexes.voidclearContexts(Resource... contexts) This should be called from within a begin-commit-rollback block.voidcommit()Commits any changes done to the LuceneIndex since the last commit.The semantics is synchronous to SailConnection.commit(), i.e.protected SearchDocumentprotected com.google.common.base.Function<? super String,? extends org.locationtech.spatial4j.context.SpatialContext> createSpatialContextMapper(Map<String, String> parameters) protected voidprotected Iterable<? extends DocumentDistance>geoQuery(IRI geoProperty, org.locationtech.spatial4j.shape.Point p, IRI units, double distance, String distanceVar, Var contextVar) protected Iterable<? extends DocumentResult>geoRelationQuery(String relation, IRI geoProperty, String wkt, Var contextVar) protected SearchDocumentgetDocument(String id) Returns a Document representing the specified document ID (combination of resource and context), or null when no such Document exists yet.getDocument(Resource subject, Resource context) Returns a Document representing the specified Resource and Context combination, or null when no such Document exists yet.protected Iterable<? extends SearchDocument>getDocuments(String resourceId) Iterable<? extends SearchDocument>getDocuments(Resource subject) Returns a list of Documents representing the specified Resource (empty when no such Document exists yet).Each document represent a set of statements with the specified Resource as a subject, which are stored in a specific contextgetPropertyFields(Set<String> fields) Filters the given list of fields, retaining all property fields.protected org.locationtech.spatial4j.context.SpatialContextgetSpatialContext(String property) String[]getTypes()voidinitialize(Properties parameters) protected BulkUpdaterprotected SearchDocumentnewDocument(String id, String resourceId, String context) protected Iterable<? extends DocumentScore>Parse the passed query.voidrollback()org.elasticsearch.search.SearchHitssearch(Resource resource, org.elasticsearch.action.search.SearchRequestBuilder request, org.elasticsearch.index.query.QueryBuilder query) Evaluates the given query only for the given resource.org.elasticsearch.search.SearchHitssearch(org.elasticsearch.action.search.SearchRequestBuilder request, org.elasticsearch.index.query.QueryBuilder query) Evaluates the given query and returns the results as a TopDocs instance.voidshutDown()protected voidMethods inherited from class org.eclipse.rdf4j.sail.lucene.AbstractSearchIndex
accept, addDocuments, addRemoveStatements, addStatement, evaluate, getIndexedTypeMapping, getResource, isGeoField, isIndexedTypeStatement, isTypeFilteringEnabled, isTypeStatement, parseLuceneQueryShape, parseQueryPoint, parseQueryShape, removeStatement
-
Field Details
-
INDEX_NAME_KEY
Set the parameter "indexName=" to specify the index to use.- See Also:
-
DOCUMENT_TYPE_KEY
Set the parameter "documentType=" to specify the document type to use. By default, the document type is "resource".- See Also:
-
TRANSPORT_KEY
Set the parameter "transport=" to specify the address of the cluster to use (e.g. localhost:9300).- See Also:
-
WAIT_FOR_STATUS_KEY
Set the parameter "waitForStatus=" to configure ifinitializationshould wait for a particular health status. The value can be one of "green" or "yellow". Does not wait by default.- See Also:
-
WAIT_FOR_NODES_KEY
Set the parameter "waitForNodes=" to configure ifinitializationshould wait until the specified number of nodes are available. Does not wait by default.- See Also:
-
WAIT_FOR_ACTIVE_SHARDS_KEY
Set the parameter "waitForActiveShards=" to configure ifinitializationshould wait until the specified number of shards to be active. Does not wait by default.- See Also:
-
WAIT_FOR_RELOCATING_SHARDS_KEY
Deprecated.useWAIT_FOR_NO_RELOCATING_SHARDS_KEYin elastic search >= 5.xSet the parameter "waitForRelocatingShards=" to configure ifinitializationshould wait until the specified number of nodes are relocating. Does not wait by default.- See Also:
-
WAIT_FOR_NO_RELOCATING_SHARDS_KEY
Set the parameter "waitForNoRelocatingShards=true|false" to configure ifinitializationshould wait until the are no relocating shards. Defaults to false, meaning the operation does not wait on there being no more relocating shards. Set to true to wait until the number of relocating shards in the cluster is 0.- See Also:
-
DEFAULT_INDEX_NAME
- See Also:
-
DEFAULT_DOCUMENT_TYPE
- See Also:
-
DEFAULT_TRANSPORT
- See Also:
-
DEFAULT_ANALYZER
- See Also:
-
ELASTICSEARCH_KEY_PREFIX
- See Also:
-
PROPERTY_FIELD_PREFIX
- See Also:
-
ALL_PROPERTY_FIELDS
- See Also:
-
GEOPOINT_FIELD_PREFIX
- See Also:
-
GEOSHAPE_FIELD_PREFIX
- See Also:
-
-
Constructor Details
-
ElasticsearchIndex
public ElasticsearchIndex()
-
-
Method Details
-
getClusterName
-
getIndexName
-
getTypes
-
initialize
- Specified by:
initializein interfaceSearchIndex- Overrides:
initializein classAbstractSearchIndex- Throws:
Exception
-
createSpatialContextMapper
-
getMappings
- Throws:
IOException
-
getSpatialContext
- Specified by:
getSpatialContextin classAbstractSearchIndex
-
shutDown
- Throws:
IOException
-
getDocument
Returns a Document representing the specified document ID (combination of resource and context), or null when no such Document exists yet.- Specified by:
getDocumentin classAbstractSearchIndex- Throws:
IOException
-
getDocuments
- Specified by:
getDocumentsin classAbstractSearchIndex- Throws:
IOException
-
newDocument
- Specified by:
newDocumentin classAbstractSearchIndex
-
copyDocument
- Specified by:
copyDocumentin classAbstractSearchIndex
-
addDocument
- Specified by:
addDocumentin classAbstractSearchIndex- Throws:
IOException
-
updateDocument
- Specified by:
updateDocumentin classAbstractSearchIndex- Throws:
IOException
-
deleteDocument
- Specified by:
deleteDocumentin classAbstractSearchIndex- Throws:
IOException
-
newBulkUpdate
- Specified by:
newBulkUpdatein classAbstractSearchIndex
-
getDocument
Returns a Document representing the specified Resource and Context combination, or null when no such Document exists yet.- Parameters:
subject-context-- Returns:
- search document
- Throws:
IOException
-
getDocuments
Returns a list of Documents representing the specified Resource (empty when no such Document exists yet).Each document represent a set of statements with the specified Resource as a subject, which are stored in a specific context- Parameters:
subject-- Returns:
- list of documents
- Throws:
IOException
-
getPropertyFields
Filters the given list of fields, retaining all property fields.- Parameters:
fields-- Returns:
- set of fields
-
begin
Description copied from interface:SearchIndexBegins a transaction.- Throws:
IOException
-
commit
Description copied from interface:SearchIndexCommits any changes done to the LuceneIndex since the last commit.The semantics is synchronous to SailConnection.commit(), i.e. the LuceneIndex should be committed/rolled back whenever the LuceneSailConnection is committed/rolled back.- Throws:
IOException
-
rollback
- Throws:
IOException
-
query
protected Iterable<? extends DocumentScore> query(Resource subject, QuerySpec spec) throws MalformedQueryException, IOException Parse the passed query.- Specified by:
queryin classAbstractSearchIndex- Parameters:
subject-spec- query to process- Returns:
- the parsed query
- Throws:
MalformedQueryExceptionIOExceptionIllegalArgumentException- if the spec contains a multi-param query
-
search
public org.elasticsearch.search.SearchHits search(Resource resource, org.elasticsearch.action.search.SearchRequestBuilder request, org.elasticsearch.index.query.QueryBuilder query) Evaluates the given query only for the given resource.- Parameters:
resource-request-query-- Returns:
- search hits
-
geoQuery
protected Iterable<? extends DocumentDistance> geoQuery(IRI geoProperty, org.locationtech.spatial4j.shape.Point p, IRI units, double distance, String distanceVar, Var contextVar) throws MalformedQueryException, IOException - Specified by:
geoQueryin classAbstractSearchIndex- Throws:
MalformedQueryExceptionIOException
-
geoRelationQuery
protected Iterable<? extends DocumentResult> geoRelationQuery(String relation, IRI geoProperty, String wkt, Var contextVar) throws MalformedQueryException, IOException - Specified by:
geoRelationQueryin classAbstractSearchIndex- Throws:
MalformedQueryExceptionIOException
-
search
public org.elasticsearch.search.SearchHits search(org.elasticsearch.action.search.SearchRequestBuilder request, org.elasticsearch.index.query.QueryBuilder query) Evaluates the given query and returns the results as a TopDocs instance. -
clearContexts
Description copied from interface:SearchIndexThis should be called from within a begin-commit-rollback block.- Parameters:
contexts-- Throws:
IOException
-
clear
Description copied from interface:SearchIndexClears the indexes.- Throws:
IOException
-
WAIT_FOR_NO_RELOCATING_SHARDS_KEYin elastic search >= 5.x