Class QueryBuilders


  • public final class QueryBuilders
    extends java.lang.Object
    Utility class to create search queries.
    • Method Detail

      • matchAllQuery

        public static MatchAllQueryBuilder matchAllQuery()
        A query that matches on all documents.
      • matchQuery

        public static MatchQueryBuilder matchQuery​(java.lang.String name,
                                                   java.lang.Object text)
        Creates a match query with type "BOOLEAN" for the provided field name and text.
        Parameters:
        name - The field name.
        text - The query text (to be analyzed).
      • commonTermsQuery

        public static CommonTermsQueryBuilder commonTermsQuery​(java.lang.String fieldName,
                                                               java.lang.Object text)
        Creates a common query for the provided field name and text.
        Parameters:
        fieldName - The field name.
        text - The query text (to be analyzed).
      • multiMatchQuery

        public static MultiMatchQueryBuilder multiMatchQuery​(java.lang.Object text,
                                                             java.lang.String... fieldNames)
        Creates a match query with type "BOOLEAN" for the provided field name and text.
        Parameters:
        fieldNames - The field names.
        text - The query text (to be analyzed).
      • matchPhraseQuery

        public static MatchPhraseQueryBuilder matchPhraseQuery​(java.lang.String name,
                                                               java.lang.Object text)
        Creates a text query with type "PHRASE" for the provided field name and text.
        Parameters:
        name - The field name.
        text - The query text (to be analyzed).
      • matchPhrasePrefixQuery

        public static MatchPhrasePrefixQueryBuilder matchPhrasePrefixQuery​(java.lang.String name,
                                                                           java.lang.Object text)
        Creates a match query with type "PHRASE_PREFIX" for the provided field name and text.
        Parameters:
        name - The field name.
        text - The query text (to be analyzed).
      • disMaxQuery

        public static DisMaxQueryBuilder disMaxQuery()
        A query that generates the union of documents produced by its sub-queries, and that scores each document with the maximum score for that document as produced by any sub-query, plus a tie breaking increment for any additional matching sub-queries.
      • idsQuery

        public static IdsQueryBuilder idsQuery()
        Constructs a query that will match only specific ids within all types.
      • idsQuery

        public static IdsQueryBuilder idsQuery​(java.lang.String... types)
        Constructs a query that will match only specific ids within types.
        Parameters:
        types - The mapping/doc type
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 java.lang.String value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 int value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 long value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 float value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 double value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 boolean value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • termQuery

        public static TermQueryBuilder termQuery​(java.lang.String name,
                                                 java.lang.Object value)
        A Query that matches documents containing a term.
        Parameters:
        name - The name of the field
        value - The value of the term
      • prefixQuery

        public static PrefixQueryBuilder prefixQuery​(java.lang.String name,
                                                     java.lang.String prefix)
        A Query that matches documents containing terms with a specified prefix.
        Parameters:
        name - The name of the field
        prefix - The prefix query
      • rangeQuery

        public static RangeQueryBuilder rangeQuery​(java.lang.String name)
        A Query that matches documents within an range of terms.
        Parameters:
        name - The field name
      • wildcardQuery

        public static WildcardQueryBuilder wildcardQuery​(java.lang.String name,
                                                         java.lang.String query)
        Implements the wildcard search query. Supported wildcards are *, which matches any character sequence (including the empty one), and ?, which matches any single character. Note this query can be slow, as it needs to iterate over many terms. In order to prevent extremely slow WildcardQueries, a Wildcard term should not start with one of the wildcards * or ?.
        Parameters:
        name - The field name
        query - The wildcard query string
      • regexpQuery

        public static RegexpQueryBuilder regexpQuery​(java.lang.String name,
                                                     java.lang.String regexp)
        A Query that matches documents containing terms with a specified regular expression.
        Parameters:
        name - The name of the field
        regexp - The regular expression
      • simpleQueryStringQuery

        public static SimpleQueryStringBuilder simpleQueryStringQuery​(java.lang.String queryString)
        A query that acts similar to a query_string query, but won't throw exceptions for any weird string syntax. See SimpleQueryParser for the full supported syntax.
      • boostingQuery

        public static BoostingQueryBuilder boostingQuery​(QueryBuilder positiveQuery,
                                                         QueryBuilder negativeQuery)
        The BoostingQuery class can be used to effectively demote results that match a given query. Unlike the "NOT" clause, this still selects documents that contain undesirable terms, but reduces their overall score:
      • boolQuery

        public static BoolQueryBuilder boolQuery()
        A Query that matches documents matching boolean combinations of other queries.
      • spanTermQuery

        public static SpanTermQueryBuilder spanTermQuery​(java.lang.String name,
                                                         java.lang.String value)
      • spanTermQuery

        public static SpanTermQueryBuilder spanTermQuery​(java.lang.String name,
                                                         int value)
      • spanTermQuery

        public static SpanTermQueryBuilder spanTermQuery​(java.lang.String name,
                                                         long value)
      • spanTermQuery

        public static SpanTermQueryBuilder spanTermQuery​(java.lang.String name,
                                                         float value)
      • spanTermQuery

        public static SpanTermQueryBuilder spanTermQuery​(java.lang.String name,
                                                         double value)
      • spanWithinQuery

        public static SpanWithinQueryBuilder spanWithinQuery​(SpanQueryBuilder big,
                                                             SpanQueryBuilder little)
        Creates a new span_within builder.
        Parameters:
        big - the big clause, it must enclose little for a match.
        little - the little clause, it must be contained within big for a match.
      • spanContainingQuery

        public static SpanContainingQueryBuilder spanContainingQuery​(SpanQueryBuilder big,
                                                                     SpanQueryBuilder little)
        Creates a new span_containing builder.
        Parameters:
        big - the big clause, it must enclose little for a match.
        little - the little clause, it must be contained within big for a match.
      • constantScoreQuery

        public static ConstantScoreQueryBuilder constantScoreQuery​(QueryBuilder queryBuilder)
        A query that wraps another query and simply returns a constant score equal to the query boost for every document in the query.
        Parameters:
        queryBuilder - The query to wrap in a constant score query
      • functionScoreQuery

        public static FunctionScoreQueryBuilder functionScoreQuery​(QueryBuilder queryBuilder)
        A function_score query with no functions.
        Parameters:
        queryBuilder - The query to custom score
        Returns:
        the function score query
      • functionScoreQuery

        public static FunctionScoreQueryBuilder functionScoreQuery​(ScoreFunctionBuilder function)
        A query that allows to define a custom scoring function.
        Parameters:
        function - The function builder used to custom score
      • functionScoreQuery

        public static FunctionScoreQueryBuilder functionScoreQuery​(QueryBuilder queryBuilder,
                                                                   ScoreFunctionBuilder function)
        A query that allows to define a custom scoring function.
        Parameters:
        queryBuilder - The query to custom score
        function - The function builder used to custom score
      • moreLikeThisQuery

        public static MoreLikeThisQueryBuilder moreLikeThisQuery​(java.lang.String[] fields,
                                                                 java.lang.String[] likeTexts,
                                                                 MoreLikeThisQueryBuilder.Item[] likeItems)
        A more like this query that finds documents that are "like" the provided texts or documents which is checked against the fields the query is constructed with.
        Parameters:
        fields - the field names that will be used when generating the 'More Like This' query.
        likeTexts - the text to use when generating the 'More Like This' query.
        likeItems - the documents to use when generating the 'More Like This' query.
      • moreLikeThisQuery

        public static MoreLikeThisQueryBuilder moreLikeThisQuery​(java.lang.String[] likeTexts,
                                                                 MoreLikeThisQueryBuilder.Item[] likeItems)
        A more like this query that finds documents that are "like" the provided texts or documents which is checked against the "_all" field.
        Parameters:
        likeTexts - the text to use when generating the 'More Like This' query.
        likeItems - the documents to use when generating the 'More Like This' query.
      • moreLikeThisQuery

        public static MoreLikeThisQueryBuilder moreLikeThisQuery​(java.lang.String[] likeTexts)
        A more like this query that finds documents that are "like" the provided texts which is checked against the "_all" field.
        Parameters:
        likeTexts - the text to use when generating the 'More Like This' query.
      • moreLikeThisQuery

        public static MoreLikeThisQueryBuilder moreLikeThisQuery​(MoreLikeThisQueryBuilder.Item[] likeItems)
        A more like this query that finds documents that are "like" the provided documents which is checked against the "_all" field.
        Parameters:
        likeItems - the documents to use when generating the 'More Like This' query.
      • nestedQuery

        public static NestedQueryBuilder nestedQuery​(java.lang.String path,
                                                     QueryBuilder query,
                                                     org.apache.lucene.search.join.ScoreMode scoreMode)
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   java.lang.String... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   int... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   long... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   float... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   double... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   java.lang.Object... values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • termsQuery

        public static TermsQueryBuilder termsQuery​(java.lang.String name,
                                                   java.util.Collection<?> values)
        A filer for a field based on several terms matching on any of them.
        Parameters:
        name - The field name
        values - The terms
      • wrapperQuery

        public static WrapperQueryBuilder wrapperQuery​(java.lang.String source)
        A Query builder which allows building a query thanks to a JSON string or binary data.
      • wrapperQuery

        public static WrapperQueryBuilder wrapperQuery​(BytesReference source)
        A Query builder which allows building a query thanks to a JSON string or binary data.
      • wrapperQuery

        public static WrapperQueryBuilder wrapperQuery​(byte[] source)
        A Query builder which allows building a query thanks to a JSON string or binary data.
      • typeQuery

        public static TypeQueryBuilder typeQuery​(java.lang.String type)
        A filter based on doc/mapping type.
      • termsLookupQuery

        public static TermsQueryBuilder termsLookupQuery​(java.lang.String name,
                                                         TermsLookup termsLookup)
        A terms query that can extract the terms from another doc in an index.
      • scriptQuery

        public static ScriptQueryBuilder scriptQuery​(Script script)
        A builder for filter based on a script.
        Parameters:
        script - The script to filter by.
      • geoDistanceQuery

        public static GeoDistanceQueryBuilder geoDistanceQuery​(java.lang.String name)
        A filter to filter based on a specific distance from a specific geo location / point.
        Parameters:
        name - The location field name.
      • geoBoundingBoxQuery

        public static GeoBoundingBoxQueryBuilder geoBoundingBoxQuery​(java.lang.String name)
        A filter to filter based on a bounding box defined by top left and bottom right locations / points
        Parameters:
        name - The location field name.
      • geoPolygonQuery

        public static GeoPolygonQueryBuilder geoPolygonQuery​(java.lang.String name,
                                                             java.util.List<GeoPoint> points)
        A filter to filter based on a polygon defined by a set of locations / points.
        Parameters:
        name - The location field name.
      • geoShapeQuery

        public static GeoShapeQueryBuilder geoShapeQuery​(java.lang.String name,
                                                         ShapeBuilder shape)
                                                  throws java.io.IOException
        A filter based on the relationship of a shape and indexed shapes
        Parameters:
        name - The shape field name
        shape - Shape to use in the filter
        Throws:
        java.io.IOException
      • geoShapeQuery

        public static GeoShapeQueryBuilder geoShapeQuery​(java.lang.String name,
                                                         java.lang.String indexedShapeId,
                                                         java.lang.String indexedShapeType)
      • geoIntersectionQuery

        public static GeoShapeQueryBuilder geoIntersectionQuery​(java.lang.String name,
                                                                ShapeBuilder shape)
                                                         throws java.io.IOException
        A filter to filter indexed shapes intersecting with shapes
        Parameters:
        name - The shape field name
        shape - Shape to use in the filter
        Throws:
        java.io.IOException
      • geoIntersectionQuery

        public static GeoShapeQueryBuilder geoIntersectionQuery​(java.lang.String name,
                                                                java.lang.String indexedShapeId,
                                                                java.lang.String indexedShapeType)
      • geoWithinQuery

        public static GeoShapeQueryBuilder geoWithinQuery​(java.lang.String name,
                                                          ShapeBuilder shape)
                                                   throws java.io.IOException
        A filter to filter indexed shapes that are contained by a shape
        Parameters:
        name - The shape field name
        shape - Shape to use in the filter
        Throws:
        java.io.IOException
      • geoWithinQuery

        public static GeoShapeQueryBuilder geoWithinQuery​(java.lang.String name,
                                                          java.lang.String indexedShapeId,
                                                          java.lang.String indexedShapeType)
      • geoDisjointQuery

        public static GeoShapeQueryBuilder geoDisjointQuery​(java.lang.String name,
                                                            ShapeBuilder shape)
                                                     throws java.io.IOException
        A filter to filter indexed shapes that are not intersection with the query shape
        Parameters:
        name - The shape field name
        shape - Shape to use in the filter
        Throws:
        java.io.IOException
      • geoDisjointQuery

        public static GeoShapeQueryBuilder geoDisjointQuery​(java.lang.String name,
                                                            java.lang.String indexedShapeId,
                                                            java.lang.String indexedShapeType)
      • existsQuery

        public static ExistsQueryBuilder existsQuery​(java.lang.String name)
        A filter to filter only documents where a field exists in them.
        Parameters:
        name - The name of the field