org.elasticsearch.index.query.QueryBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch Show documentation
Show all versions of elasticsearch Show documentation
Elasticsearch subproject :server
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.index.query;
import org.apache.lucene.search.Query;
import org.elasticsearch.common.io.stream.NamedWriteable;
import org.elasticsearch.common.xcontent.ToXContentObject;
import java.io.IOException;
public interface QueryBuilder extends NamedWriteable, ToXContentObject, Rewriteable {
/**
* Converts this QueryBuilder to a lucene {@link Query}.
* Returns {@code null} if this query should be ignored in the context of
* parent queries.
*
* @param context additional information needed to construct the queries
* @return the {@link Query} or {@code null} if this query should be ignored upstream
*/
Query toQuery(QueryShardContext context) throws IOException;
/**
* Sets the arbitrary name to be assigned to the query (see named queries).
* Implementers should return the concrete type of the
* {@link QueryBuilder} so that calls can be chained. This is done
* automatically when extending {@link AbstractQueryBuilder}.
*/
QueryBuilder queryName(String queryName);
/**
* Returns the arbitrary name assigned to the query (see named queries).
*/
String queryName();
/**
* Returns the boost for this query.
*/
float 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.
* Implementers should return the concrete type of the
* {@link QueryBuilder} so that calls can be chained. This is done
* automatically when extending {@link AbstractQueryBuilder}.
*/
QueryBuilder boost(float boost);
/**
* Returns the name that identifies uniquely the query
*/
String getName();
/**
* 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.
*/
@Override
default QueryBuilder rewrite(QueryRewriteContext queryShardContext) throws IOException {
return this;
}
}