Package org.elasticsearch.index.query
Class SearchExecutionContext
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
client, nowInMillis
-
Constructor Summary
ConstructorDescriptionSearchExecutionContext(int shardId, int shardRequestIndex, IndexSettings indexSettings, BitsetFilterCache bitsetFilterCache, ,<SearchLookup>,IndexFieldData<?>> indexFieldDataLookup, MapperService mapperService, MappingLookup mappingLookup, SimilarityService similarityService, ScriptService scriptService, org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, NamedWriteableRegistry namedWriteableRegistry, Client client, org.apache.lucene.search.IndexSearcher searcher, nowInMillis, clusterAlias, <> indexNameMatcher, allowExpensiveQueries, ValuesSourceRegistry valuesSourceRegistry, <,> runtimeMappings)
Build a SearchExecutionContext. -
Method Summary
Modifier and TypeMethodDescriptionvoid
name, org.apache.lucene.search.Query query)
boolean
org.apache.lucene.search.join.BitSetProducer
bitsetFilter(org.apache.lucene.search.Query filter)
type)
Given a type (eg.<FactoryType>
FactoryTypecompile(Script script, ScriptContext<FactoryType> context)
Compile script using script serviceboolean
field)
Does the index analyzer for this field have token filters that may produce backwards offsets in term vectorsReturns an instance ofSearchExecutionContext
if available of null otherwise<,org.apache.lucene.search.Query>
<>
void
executeAsyncActions(ActionListener listener)
Executes all registered async actions and notifies the listener once it's done.protected void
This method fails iffreezeContext()
is called before on this context.void
if this method is called the query context will throw exception if methods are accessed that could yield different results across executions likegetClient()
org.apache.lucene.search.similarities.Similarity
The default similarity configured in the index settings.name)
Returns theMappedFieldType
for the provided field name.<IFD extends IndexFieldData<?>>
IFDgetForField(MappedFieldType fieldType)
Returns the fully qualified index including a remote cluster alias if applicable, and the index uuidorg.apache.lucene.analysis.Analyzer
<,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).Returns the index settings for this context.<>
pattern)
Returns the names of all mapped fields that match a given pattern All names returned by this method are guaranteed to resolve to a MappedFieldType if passed togetFieldType(String)
nestedPath)
Given a nested object path, returns the path to its nested parent In particular, if a nested field `foo` contains an object field `bar.baz`, then calling this method with `foo.bar.baz` will return the path `foo`, skipping over the object-but-not-nested `foo.bar`name)
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.getType()
[]
getTypes()
boolean
boolean
index()
boolean
pattern)
Given an index pattern, checks whether it matches against the current shard.boolean
field)
boolean
Returnstrue
iff the result of the processed search request is cacheable.boolean
name)
Returns true if the field identified by the provided name is mapped, false otherwiseboolean
field)
boolean
lookup()
Get the lookup to use during the search.Cache key for current mapping.long
Returns the time in milliseconds that is shared across all resources involved.parseDocument(SourceToParse source)
Parse a document with current mapping.parseInnerQueryBuilder(org.elasticsearch.common.xcontent.XContentParser parser)
boolean
boolean
boolean
<>
Returns the narrowed down explicit types, or, if not set, all types.void
<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, for instance if this rewrite context is used to index queries (percolation).void
setAllowUnmappedFields(boolean allowUnmappedFields)
void
setMapUnmappedFieldAsString(boolean mapUnmappedFieldAsString)
void
... types)
<>
fullName)
toQuery(QueryBuilder queryBuilder)
Methods inherited from class org.elasticsearch.index.query.QueryRewriteContext
convertToCoordinatorRewriteContext, getWriteableRegistry, getXContentRegistry, hasAsyncActions
Methods inherited from class java.lang.
, , , , , , , , , ,
-
Constructor Details
-
SearchExecutionContext
public SearchExecutionContext(int shardId, int shardRequestIndex, IndexSettings indexSettings, BitsetFilterCache bitsetFilterCache, ,<SearchLookup>,IndexFieldData<?>> indexFieldDataLookup, MapperService mapperService, MappingLookup mappingLookup, SimilarityService similarityService, ScriptService scriptService, org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, NamedWriteableRegistry namedWriteableRegistry, Client client, org.apache.lucene.search.IndexSearcher searcher, nowInMillis, clusterAlias, <> indexNameMatcher, allowExpensiveQueries, ValuesSourceRegistry valuesSourceRegistry, <,> runtimeMappings)Build a SearchExecutionContext. -
SearchExecutionContext
-
-
Method Details
-
setTypes
public void setTypes(... types) -
getTypes
public [] getTypes() -
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
public <> 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) -
allowExpensiveQueries
public boolean allowExpensiveQueries() -
getForField
-
addNamedQuery
public void addNamedQuery( name, org.apache.lucene.search.Query query) -
copyNamedQueries
public <,org.apache.lucene.search.Query> copyNamedQueries() -
parseDocument
Parse a document with current mapping.- Throws:
MapperParsingException
-
hasNested
public boolean hasNested() -
hasMappings
public boolean hasMappings() -
nestedMappings
-
getMatchingFieldNames
public <> getMatchingFieldNames( pattern)Returns the names of all mapped fields that match a given pattern All names returned by this method are guaranteed to resolve to a MappedFieldType if passed togetFieldType(String)
- Parameters:
pattern
- the field name pattern
-
getFieldType
public name)Returns theMappedFieldType
for the provided field name. If the field is not mapped, the behaviour depends on the index.query.parse.allow_unmapped_fields setting, which defaults to true. In case unmapped fields are allowed, null is returned when the field is not mapped. In case unmapped fields are not allowed, either an exception is thrown or the field is automatically mapped as a text field.- Throws:
QueryShardException
- if unmapped fields are not allowed and automatically mapping unmapped fields as text is disabled.- See Also:
setAllowUnmappedFields(boolean)
,setMapUnmappedFieldAsString(boolean)
-
isFieldMapped
public boolean isFieldMapped( name)Returns true if the field identified by the provided name is mapped, false otherwise -
getObjectMapper
public name) -
isMetadataField
public boolean isMetadataField( field) -
sourcePath
public <> sourcePath( fullName) -
isSourceEnabled
public boolean isSourceEnabled() -
buildAnonymousFieldType
public type)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. -
getIndexAnalyzers
-
getIndexAnalyzer
public org.apache.lucene.analysis.Analyzer getIndexAnalyzer(<,NamedAnalyzer> unindexedFieldAnalyzer)Return the index-time analyzer for the current index- Parameters:
unindexedFieldAnalyzer
- a function that builds an analyzer for unindexed fields
-
getValuesSourceRegistry
-
setAllowUnmappedFields
public void setAllowUnmappedFields(boolean allowUnmappedFields) -
setMapUnmappedFieldAsString
public void setMapUnmappedFieldAsString(boolean mapUnmappedFieldAsString) -
queryTypes
public <> queryTypes()Returns the narrowed down explicit types, or, if not set, all types. -
containsBrokenAnalysis
public boolean containsBrokenAnalysis( field)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. -
nestedScope
-
indexVersionCreated
-
indexMatches
public boolean indexMatches( pattern)Given an index pattern, checks whether it matches against the current shard. The pattern may represent a fully qualified index name if the search targets remote shards. -
indexSortedOnField
public boolean indexSortedOnField( field) -
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()
-
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 rewriteabel 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 final long nowInMillis()Description copied from class:QueryRewriteContext
Returns the time in milliseconds that is shared across all resources involved. Even across shards and nodes.- Overrides:
nowInMillis
in classQueryRewriteContext
-
getClient
-
parseInnerQueryBuilder
public QueryBuilder parseInnerQueryBuilder(org.elasticsearch.common.xcontent.XContentParser parser) throws- Throws:
-
convertToSearchExecutionContext
Description copied from class:QueryRewriteContext
Returns an instance ofSearchExecutionContext
if available of null otherwise- Overrides:
convertToSearchExecutionContext
in classQueryRewriteContext
-
getIndexSettings
Returns the index settings for this context. This might return null if the context has not index scope. -
getType
public getType() -
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, for instance if this rewrite context is used to index queries (percolation). -
getFullyQualifiedIndex
Returns the fully qualified index including a remote cluster alias if applicable, and the index uuid -
mappingCacheKey
Cache key for current mapping. -
getNestedParent
public getNestedParent( nestedPath)Given a nested object path, returns the path to its nested parent In particular, if a nested field `foo` contains an object field `bar.baz`, then calling this method with `foo.bar.baz` will return the path `foo`, skipping over the object-but-not-nested `foo.bar` -
getNestedDocuments
-