java.lang.Object
org.elasticsearch.index.query.QueryRewriteContext
org.elasticsearch.index.query.SearchExecutionContext
The context used to execute a search request on a shard. It provides access
to required information like mapping definitions and document data.
This context is used in several components of search execution, including
building queries and fetching hits.
-
Field Summary
Fields inherited from class org.elasticsearch.index.query.QueryRewriteContext
allowedFields, allowExpensiveQueries, allowUnmappedFields, client, fullyQualifiedIndex, indexNameMatcher, indexSettings, mapperService, mappingLookup, mapUnmappedFieldAsString, nowInMillis, runtimeMappings, scriptService, valuesSourceRegistry, writeableRegistry
-
Constructor Summary
ConstructorsConstructorDescriptionSearchExecutionContext
(int shardId, int shardRequestIndex, IndexSettings indexSettings, ClusterSettings clusterSettings, BitsetFilterCache bitsetFilterCache, BiFunction<MappedFieldType, FieldDataContext, IndexFieldData<?>> indexFieldDataLookup, MapperService mapperService, MappingLookup mappingLookup, SimilarityService similarityService, ScriptService scriptService, XContentParserConfiguration parserConfiguration, NamedWriteableRegistry namedWriteableRegistry, Client client, org.apache.lucene.search.IndexSearcher searcher, LongSupplier nowInMillis, String clusterAlias, Predicate<String> indexNameMatcher, BooleanSupplier allowExpensiveQueries, ValuesSourceRegistry valuesSourceRegistry, Map<String, Object> runtimeMappings) Build a SearchExecutionContext. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addNamedQuery
(String name, org.apache.lucene.search.Query query) org.apache.lucene.search.join.BitSetProducer
bitsetFilter
(org.apache.lucene.search.Query filter) Given a type (eg.<FactoryType>
FactoryTypecompile
(Script script, ScriptContext<FactoryType> context) Compile script using script serviceboolean
containsBrokenAnalysis
(String field) Does the index analyzer for this field have token filters that may produce backwards offsets in term vectorsfinal SearchExecutionContext
Returns an instance ofSearchExecutionContext
if available or null otherwisevoid
Marks this context as not cacheable.void
executeAsyncActions
(ActionListener listener) Executes all registered async actions and notifies the listener once it's done.protected final void
This method fails iffreezeContext()
is called before on this context.boolean
fieldExistsInIndex
(String fieldname) Is this field present in the underlying lucene index for the current shard?final void
if this method is called the query context will throw exception if methods are accessed that could yield different results across executions likegetClient()
Returns the cluster settings for this context.org.apache.lucene.search.similarities.Similarity
The default similarity configured in the index settings.<IFD extends IndexFieldData<?>>
IFDgetForField
(MappedFieldType fieldType, MappedFieldType.FielddataOperation fielddataOperation) org.apache.lucene.analysis.Analyzer
getIndexAnalyzer
(Function<String, NamedAnalyzer> unindexedFieldAnalyzer) Return the index-time analyzer for the current indexorg.apache.lucene.index.IndexReader
Return the currentIndexReader
, ornull
if no index reader is available, for instance if this rewrite context is used to index queries (percolation).org.apache.lucene.search.similarities.Similarity
The similarity to use in searches, which takes into account per-field configuration.int
Returns the shard ID this context was created for.int
Returns the shard request ordinal that is used by the main search request to reference this shard.boolean
index()
boolean
indexSortedOnField
(String field) final boolean
Returnstrue
iff the result of the processed search request is cacheable.boolean
isFieldMapped
(String name) Returns true if the field identified by the provided name is mapped, false otherwiseboolean
isMetadataField
(String field) boolean
isMultiField
(String field) boolean
Will there be_source
.boolean
Does the source need to be rebuilt on the fly?lookup()
Get the lookup to use during the search.Cache key for current mapping.newSourceLoader
(boolean forceSyntheticSource) Build something to load source_source
.long
Returns the time in milliseconds that is shared across all resources involved.parseDocument
(SourceToParse source) Parse a document with current mapping.boolean
boolean
boolean
void
registerAsyncAction
(BiConsumer<Client, ActionListener<?>> asyncAction) Registers an async action that must be executed before the next rewrite round in order to make progress.org.apache.lucene.search.IndexSearcher
searcher()
Return the currentIndexSearcher
, ornull
if no index reader is available, which happens if this rewrite context is used to index queries (percolation).void
setAllowedFields
(Predicate<String> allowedFields) void
setLookupProviders
(SourceProvider sourceProvider, Function<org.apache.lucene.index.LeafReaderContext, LeafFieldLookupProvider> fieldLookupProvider) Replace the standard source provider and field lookup provider on the SearchLookup Note that this will replace the current SearchLookup with a new one, but will not update the source provider on previously build lookups.sourcePath
(String fullName) toQuery
(QueryBuilder queryBuilder) Methods inherited from class org.elasticsearch.index.query.QueryRewriteContext
allowExpensiveQueries, convertToCoordinatorRewriteContext, convertToDataRewriteContext, convertToIndexMetadataContext, fieldType, getFieldType, getFullyQualifiedIndex, getIndexAnalyzers, getIndexSettings, getMatchingFieldNames, getParserConfig, getValuesSourceRegistry, getWriteableRegistry, hasAsyncActions, indexMatches, setAllowUnmappedFields, setMapUnmappedFieldAsString
-
Constructor Details
-
SearchExecutionContext
public SearchExecutionContext(int shardId, int shardRequestIndex, IndexSettings indexSettings, ClusterSettings clusterSettings, BitsetFilterCache bitsetFilterCache, BiFunction<MappedFieldType, FieldDataContext, IndexFieldData<?>> indexFieldDataLookup, MapperService mapperService, MappingLookup mappingLookup, SimilarityService similarityService, ScriptService scriptService, XContentParserConfiguration parserConfiguration, NamedWriteableRegistry namedWriteableRegistry, Client client, org.apache.lucene.search.IndexSearcher searcher, LongSupplier nowInMillis, String clusterAlias, Predicate<String> indexNameMatcher, BooleanSupplier allowExpensiveQueries, ValuesSourceRegistry valuesSourceRegistry, Map<String, Object> runtimeMappings) Build a SearchExecutionContext. -
SearchExecutionContext
-
-
Method Details
-
getSearchSimilarity
public org.apache.lucene.search.similarities.Similarity getSearchSimilarity()The similarity to use in searches, which takes into account per-field configuration. -
getDefaultSimilarity
public org.apache.lucene.search.similarities.Similarity getDefaultSimilarity()The default similarity configured in the index settings. -
defaultFields
-
queryStringLenient
public boolean queryStringLenient() -
queryStringAnalyzeWildcard
public boolean queryStringAnalyzeWildcard() -
queryStringAllowLeadingWildcard
public boolean queryStringAllowLeadingWildcard() -
bitsetFilter
public org.apache.lucene.search.join.BitSetProducer bitsetFilter(org.apache.lucene.search.Query filter) -
getForField
public <IFD extends IndexFieldData<?>> IFD getForField(MappedFieldType fieldType, MappedFieldType.FielddataOperation fielddataOperation) -
addNamedQuery
-
copyNamedQueries
-
parseDocument
Parse a document with current mapping.- Throws:
DocumentParsingException
-
nestedLookup
-
hasMappings
public boolean hasMappings() -
isFieldMapped
Returns true if the field identified by the provided name is mapped, false otherwise -
isMetadataField
-
isMultiField
-
sourcePath
-
isSourceEnabled
public boolean isSourceEnabled()Will there be_source
. -
isSourceSynthetic
public boolean isSourceSynthetic()Does the source need to be rebuilt on the fly? -
newSourceLoader
Build something to load source_source
. -
buildAnonymousFieldType
Given a type (eg. long, string, ...), returns an anonymous field type that can be used for search operations. Generally used to handle unmapped fields in the context of sorting. -
getIndexAnalyzer
public org.apache.lucene.analysis.Analyzer getIndexAnalyzer(Function<String, NamedAnalyzer> unindexedFieldAnalyzer) Return the index-time analyzer for the current index- Parameters:
unindexedFieldAnalyzer
- a function that builds an analyzer for unindexed fields
-
setAllowedFields
-
containsBrokenAnalysis
Does the index analyzer for this field have token filters that may produce backwards offsets in term vectors -
lookup
Get the lookup to use during the search. -
setLookupProviders
public void setLookupProviders(SourceProvider sourceProvider, Function<org.apache.lucene.index.LeafReaderContext, LeafFieldLookupProvider> fieldLookupProvider) Replace the standard source provider and field lookup provider on the SearchLookup Note that this will replace the current SearchLookup with a new one, but will not update the source provider on previously build lookups. This method should only be called before IndexReader access by the current context -
nestedScope
-
indexVersionCreated
-
indexSortedOnField
-
toQuery
-
index
-
compile
Compile script using script service -
freezeContext
public final void freezeContext()if this method is called the query context will throw exception if methods are accessed that could yield different results across executions likegetClient()
-
disableCache
public void disableCache()Marks this context as not cacheable. This method fails iffreezeContext()
is called before on this context. -
failIfFrozen
protected final void failIfFrozen()This method fails iffreezeContext()
is called before on this context. This is used to seal. This methods and all methods that call it should be final to ensure that setting the request as not cacheable and the freezing behaviour of this class cannot be bypassed. This is important so we can trust when this class says a request can be cached. -
registerAsyncAction
Description copied from class:QueryRewriteContext
Registers an async action that must be executed before the next rewrite round in order to make progress. This should be used if a rewriteable needs to fetch some external resources in order to be executed ie. a document from an index.- Overrides:
registerAsyncAction
in classQueryRewriteContext
-
executeAsyncActions
Description copied from class:QueryRewriteContext
Executes all registered async actions and notifies the listener once it's done. The value that is passed to the listener is alwaysnull
. The list of registered actions is cleared once this method returns.- Overrides:
executeAsyncActions
in classQueryRewriteContext
-
isCacheable
public final boolean isCacheable()Returnstrue
iff the result of the processed search request is cacheable. Otherwisefalse
-
getShardId
public int getShardId()Returns the shard ID this context was created for. -
getShardRequestIndex
public int getShardRequestIndex()Returns the shard request ordinal that is used by the main search request to reference this shard. -
nowInMillis
public long nowInMillis()Returns the time in milliseconds that is shared across all resources involved. Even across shards and nodes.- Overrides:
nowInMillis
in classQueryRewriteContext
-
getClient
-
convertToSearchExecutionContext
Description copied from class:QueryRewriteContext
Returns an instance ofSearchExecutionContext
if available or null otherwise- Overrides:
convertToSearchExecutionContext
in classQueryRewriteContext
-
getClusterSettings
Returns the cluster settings for this context. This might return null if the context has not cluster scope. -
getIndexReader
public org.apache.lucene.index.IndexReader getIndexReader()Return the currentIndexReader
, ornull
if no index reader is available, for instance if this rewrite context is used to index queries (percolation). -
searcher
public org.apache.lucene.search.IndexSearcher searcher()Return the currentIndexSearcher
, ornull
if no index reader is available, which happens if this rewrite context is used to index queries (percolation). -
fieldExistsInIndex
Is this field present in the underlying lucene index for the current shard? -
mappingCacheKey
Cache key for current mapping. -
getNestedDocuments
-