Interface Index<K,V>
-
- All Known Subinterfaces:
AccountIndex
,ChangeIndex
,GroupIndex
public interface Index<K,V>
Secondary index implementation for arbitrary documents.Documents are inserted into the index and are queried by converting special
Predicate
instances into index-aware predicates that use the index search results as a source.Implementations must be thread-safe and should batch inserts/updates where appropriate.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
close()
Close this index.void
delete(K key)
Delete a document from the index by key.void
deleteAll()
Delete all documents from the index.default Optional<V>
get(K key, QueryOptions opts)
Get a single document from the index.default Optional<FieldBundle>
getRaw(K key, QueryOptions opts)
Get a single raw document from the index.Schema<V>
getSchema()
Returns the schema version used by this index.DataSource<V>
getSource(Predicate<V> p, QueryOptions opts)
Convert the given operator predicate into a source searching the index and returning only the documents matching that predicate.void
insert(V obj)
Insert a document into the index.default boolean
isEnabled()
Returns whether the index is enabled.Predicate<V>
keyPredicate(K key)
Get a predicate that looks up a single document by key.void
markReady(boolean ready)
Mark whether this index is up-to-date and ready to serve reads.void
replace(V obj)
Update a document in the index.
-
-
-
Method Detail
-
close
void close()
Close this index.
-
insert
void insert(V obj)
Insert a document into the index.Results may not be immediately visible to searchers, but should be visible within a reasonable amount of time.
- Parameters:
obj
- document object
-
replace
void replace(V obj)
Update a document in the index.Semantically equivalent to deleting the document and reinserting it with new field values. A document that does not already exist is created. Results may not be immediately visible to searchers, but should be visible within a reasonable amount of time.
- Parameters:
obj
- document object
-
delete
void delete(K key)
Delete a document from the index by key.- Parameters:
key
- document key
-
deleteAll
void deleteAll()
Delete all documents from the index.
-
getSource
DataSource<V> getSource(Predicate<V> p, QueryOptions opts) throws QueryParseException
Convert the given operator predicate into a source searching the index and returning only the documents matching that predicate.This method may be called multiple times for variations on the same predicate or multiple predicate subtrees in the course of processing a single query, so it should not have any side effects (e.g. starting a search in the background).
- Parameters:
p
- the predicate to match. Must be a tree containing only AND, OR, or NOT predicates as internal nodes, andIndexPredicate
s as leaves.opts
- query options not implied by the predicate, such as start and limit.- Returns:
- a source of documents matching the predicate, returned in a defined order depending on the type of documents.
- Throws:
QueryParseException
- if the predicate could not be converted to an indexed data source.
-
get
default Optional<V> get(K key, QueryOptions opts)
Get a single document from the index.- Parameters:
key
- document key.opts
- query options. Options that do not make sense in the context of a single document, such as start, will be ignored.- Returns:
- a single document if present.
-
getRaw
default Optional<FieldBundle> getRaw(K key, QueryOptions opts)
Get a single raw document from the index.- Parameters:
key
- document key.opts
- query options. Options that do not make sense in the context of a single document, such as start, will be ignored.- Returns:
- an abstraction of a raw index document to retrieve fields from.
-
keyPredicate
Predicate<V> keyPredicate(K key)
Get a predicate that looks up a single document by key.- Parameters:
key
- document key.- Returns:
- a single predicate.
-
markReady
void markReady(boolean ready)
Mark whether this index is up-to-date and ready to serve reads.- Parameters:
ready
- whether the index is ready
-
isEnabled
default boolean isEnabled()
Returns whether the index is enabled.true
by default, but could be overridden by implementations.
-
-