Module org.elasticsearch.server
Package org.elasticsearch.index.query
Class AbstractQueryBuilder<QB extends AbstractQueryBuilder<QB>>
java.lang.Object
org.elasticsearch.index.query.AbstractQueryBuilder<QB>
- All Implemented Interfaces:
NamedWriteable
,VersionedNamedWriteable
,Writeable
,QueryBuilder
,Rewriteable<QueryBuilder>
,ToXContent
,ToXContentObject
- Direct Known Subclasses:
AbstractGeometryQueryBuilder
,BaseTermQueryBuilder
,BoolQueryBuilder
,BoostingQueryBuilder
,CombinedFieldsQueryBuilder
,CommonTermsQueryBuilder
,ConstantScoreQueryBuilder
,DisMaxQueryBuilder
,DistanceFeatureQueryBuilder
,ExistsQueryBuilder
,FieldMaskingSpanQueryBuilder
,FunctionScoreQueryBuilder
,FuzzyQueryBuilder
,GeoBoundingBoxQueryBuilder
,GeoDistanceQueryBuilder
,GeoPolygonQueryBuilder
,IdsQueryBuilder
,IntervalQueryBuilder
,KnnScoreDocQueryBuilder
,KnnVectorQueryBuilder
,MatchAllQueryBuilder
,MatchBoolPrefixQueryBuilder
,MatchNoneQueryBuilder
,MatchPhrasePrefixQueryBuilder
,MatchPhraseQueryBuilder
,MatchQueryBuilder
,MoreLikeThisQueryBuilder
,MultiMatchQueryBuilder
,NestedQueryBuilder
,PrefixQueryBuilder
,QueryStringQueryBuilder
,RangeQueryBuilder
,RegexpQueryBuilder
,ScriptQueryBuilder
,ScriptScoreQueryBuilder
,SimpleQueryStringBuilder
,SpanContainingQueryBuilder
,SpanFirstQueryBuilder
,SpanMultiTermQueryBuilder
,SpanNearQueryBuilder
,SpanNotQueryBuilder
,SpanOrQueryBuilder
,SpanWithinQueryBuilder
,TermsQueryBuilder
,TermsSetQueryBuilder
,TypeQueryV7Builder
,WildcardQueryBuilder
,WrapperQueryBuilder
public abstract class AbstractQueryBuilder<QB extends AbstractQueryBuilder<QB>>
extends Object
implements QueryBuilder
Base class for all classes producing lucene queries.
Supports conversion to BytesReference and creation of lucene Query objects.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.elasticsearch.xcontent.ToXContent
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.Params
Nested classes/interfaces inherited from interface org.elasticsearch.common.io.stream.Writeable
Writeable.Reader<V>, Writeable.Writer<V>
-
Field Summary
Modifier and TypeFieldDescriptionprotected float
static final ParseField
static final float
Default for boost to apply to resulting Lucene query.static final ParseField
protected String
Fields inherited from interface org.elasticsearch.index.query.Rewriteable
MAX_REWRITE_ROUNDS
Fields inherited from interface org.elasticsearch.xcontent.ToXContent
EMPTY, EMPTY_PARAMS
-
Constructor Summary
ModifierConstructorDescriptionprotected
protected
-
Method Summary
Modifier and TypeMethodDescriptionprotected final QueryValidationException
addValidationError
(String validationError, QueryValidationException validationException) final float
boost()
Returns the boost for this query.final QB
boost
(float boost) Sets the boost for this query.protected final void
Addboost
andquery_name
to the builder.protected final void
checkNegativeBoost
(float boost) protected static void
declareStandardFields
(AbstractObjectParser<? extends QueryBuilder, ?> parser) protected QueryBuilder
doCoordinatorRewrite
(CoordinatorRewriteContext coordinatorRewriteContext) protected abstract boolean
Indicates whether some otherQueryBuilder
object of the same type is "equal to" this one.protected abstract int
protected QueryBuilder
Optional rewrite logic that only needs access to index level metadata and services (e.g.protected QueryBuilder
doRewrite
(QueryRewriteContext queryRewriteContext) protected QueryBuilder
doSearchRewrite
(SearchExecutionContext searchExecutionContext) protected abstract org.apache.lucene.search.Query
doToQuery
(SearchExecutionContext context) protected abstract void
doWriteTo
(StreamOutput out) protected abstract void
doXContent
(XContentBuilder builder, ToXContent.Params params) final boolean
protected void
extractInnerHitBuilders
(Map<String, InnerHitContextBuilder> innerHits) For internal usage only! Extracts the inner hits from the query tree.static int
getName()
Returns the name that identifies uniquely the queryfinal int
hashCode()
protected static QueryBuilder
parseInnerQueryBuilder
(XContentParser parser) Parses an inner query.static QueryBuilder
parseTopLevelQuery
(XContentParser parser) Parses and returns a query (excluding the query field that wraps it).static QueryBuilder
parseTopLevelQuery
(XContentParser parser, Consumer<String> queryNameConsumer) Parses and returns a query (excluding the query field that wraps it).protected final void
printBoostAndQueryName
(XContentBuilder builder) Deprecated.final String
Returns the query name for the query.final QB
Sets the query name for the query.protected static List<QueryBuilder>
protected static <T> T
requireValue
(T value, String message) final QueryBuilder
rewrite
(QueryRewriteContext queryRewriteContext) Rewrites this query builder into its primitive form.static void
setMaxNestedDepth
(int maxNestedDepth) Set the maximum nested depth of bool queries.protected static void
throwParsingExceptionOnMultipleFields
(String queryName, XContentLocation contentLocation, String processedFieldName, String currentFieldName) final org.apache.lucene.search.Query
toQuery
(SearchExecutionContext context) Converts this QueryBuilder to a luceneQuery
.final String
toString()
toXContent
(XContentBuilder builder, ToXContent.Params params) protected static void
writeQueries
(StreamOutput out, List<? extends QueryBuilder> queries) final void
writeTo
(StreamOutput out) Write this into the StreamOutput.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.elasticsearch.xcontent.ToXContentObject
isFragment
Methods inherited from interface org.elasticsearch.common.io.stream.VersionedNamedWriteable
getMinimalSupportedVersion, getWriteableName
-
Field Details
-
DEFAULT_BOOST
public static final float DEFAULT_BOOSTDefault for boost to apply to resulting Lucene query. Defaults to 1.0- See Also:
-
NAME_FIELD
-
BOOST_FIELD
-
queryName
-
boost
protected float boost
-
-
Constructor Details
-
AbstractQueryBuilder
protected AbstractQueryBuilder() -
AbstractQueryBuilder
- Throws:
IOException
-
-
Method Details
-
writeTo
Description copied from interface:Writeable
Write this into the StreamOutput.- Specified by:
writeTo
in interfaceWriteable
- Throws:
IOException
-
doWriteTo
- Throws:
IOException
-
toXContent
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException - Specified by:
toXContent
in interfaceToXContent
- Throws:
IOException
-
doXContent
protected abstract void doXContent(XContentBuilder builder, ToXContent.Params params) throws IOException - Throws:
IOException
-
printBoostAndQueryName
Addboost
andquery_name
to the builder.- Throws:
IOException
-
boostAndQueryNameToXContent
Addboost
andquery_name
to the builder.- Throws:
IOException
-
toQuery
public final org.apache.lucene.search.Query toQuery(SearchExecutionContext context) throws IOException Description copied from interface:QueryBuilder
Converts this QueryBuilder to a luceneQuery
. Returnsnull
if this query should be ignored in the context of parent queries.- Specified by:
toQuery
in interfaceQueryBuilder
- Parameters:
context
- additional information needed to construct the queries- Returns:
- the
Query
ornull
if this query should be ignored upstream - Throws:
IOException
-
doToQuery
protected abstract org.apache.lucene.search.Query doToQuery(SearchExecutionContext context) throws IOException - Throws:
IOException
-
queryName
Sets the query name for the query.- Specified by:
queryName
in interfaceQueryBuilder
-
queryName
Returns the query name for the query.- Specified by:
queryName
in interfaceQueryBuilder
-
boost
public final float boost()Returns the boost for this query.- Specified by:
boost
in interfaceQueryBuilder
-
checkNegativeBoost
protected final void checkNegativeBoost(float boost) -
boost
Sets the boost for this query. Documents matching this query will (in addition to the normal weightings) have their score multiplied by the boost provided.- Specified by:
boost
in interfaceQueryBuilder
-
addValidationError
protected final QueryValidationException addValidationError(String validationError, QueryValidationException validationException) -
equals
-
doEquals
Indicates whether some otherQueryBuilder
object of the same type is "equal to" this one. -
hashCode
public final int hashCode() -
doHashCode
protected abstract int doHashCode() -
getName
Description copied from interface:QueryBuilder
Returns the name that identifies uniquely the query- Specified by:
getName
in interfaceQueryBuilder
-
writeQueries
protected static void writeQueries(StreamOutput out, List<? extends QueryBuilder> queries) throws IOException - Throws:
IOException
-
readQueries
- Throws:
IOException
-
rewrite
Description copied from interface:QueryBuilder
Rewrites this query builder into its primitive form. By default this method return the builder itself. If the builder did not change the identity reference must be returned otherwise the builder will be rewritten infinitely.- Specified by:
rewrite
in interfaceQueryBuilder
- Specified by:
rewrite
in interfaceRewriteable<QB extends AbstractQueryBuilder<QB>>
- Throws:
IOException
-
doRewrite
- Throws:
IOException
-
doCoordinatorRewrite
- Parameters:
coordinatorRewriteContext
- AQueryRewriteContext
that enables limited rewrite capabilities happening on the coordinator node before execution moves to the data node.- Returns:
- A
QueryBuilder
representing the rewritten query which could be executed without going to the date node.
-
doSearchRewrite
protected QueryBuilder doSearchRewrite(SearchExecutionContext searchExecutionContext) throws IOException - Parameters:
searchExecutionContext
- AQueryRewriteContext
that enables full rewrite capabilities happening on the data node with all information available for rewriting.- Returns:
- A
QueryBuilder
representing the rewritten query. - Throws:
IOException
-
doIndexMetadataRewrite
Optional rewrite logic that only needs access to index level metadata and services (e.g. index settings and mappings) on the data node, but not the shard / Lucene index. The can_match phase can use this logic to early terminate a search without doing any search related i/o.- Parameters:
context
- anQueryRewriteContext
instance that has access the mappings and other index metadata- Returns:
- A
QueryBuilder
representing the rewritten query, that could be used to determine whether this query yields result. - Throws:
IOException
-
extractInnerHitBuilders
For internal usage only! Extracts the inner hits from the query tree. While it extracts inner hits, child inner hits are inlined into the inner hit builder they belong to. -
parseTopLevelQuery
Parses and returns a query (excluding the query field that wraps it). To be called by API that support user provided queries. Note that the returned query may hold inner queries, and so on. Calling this method will initialize the tracking of nested depth to make sure that there's a limit to the number of queries that can be nested within one another (seeSearchModule.INDICES_MAX_NESTED_DEPTH_SETTING
. This variant of the method does not support collecting statistics about queries usage.- Throws:
IOException
-
parseTopLevelQuery
public static QueryBuilder parseTopLevelQuery(XContentParser parser, Consumer<String> queryNameConsumer) throws IOException Parses and returns a query (excluding the query field that wraps it). To be called by API that support user provided queries. Note that the returned query may hold inner queries, and so on. Calling this method will initialize the tracking of nested depth to make sure that there's a limit to the number of queries that can be nested within one another (seeSearchModule.INDICES_MAX_NESTED_DEPTH_SETTING
. The method accepts a string consumer that will be provided with each query type used in the parsed content, to be used for instance to collect statistics about queries usage.- Throws:
IOException
-
parseInnerQueryBuilder
Parses an inner query. To be called by query implementations that support inner queries.- Throws:
IOException
-
requireValue
-
throwParsingExceptionOnMultipleFields
protected static void throwParsingExceptionOnMultipleFields(String queryName, XContentLocation contentLocation, String processedFieldName, String currentFieldName) -
declareStandardFields
Addsboost
andquery_name
parsing to theAbstractObjectParser
passed in. All query builders exceptMatchAllQueryBuilder
andMatchNoneQueryBuilder
support these fields so they should use this method. -
setMaxNestedDepth
public static void setMaxNestedDepth(int maxNestedDepth) Set the maximum nested depth of bool queries. Default value is 20. -
getMaxNestedDepth
public static int getMaxNestedDepth() -
toString
-
boostAndQueryNameToXContent(org.elasticsearch.xcontent.XContentBuilder)