The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

ElasticSearch::QueryDSL

DESCRIPTION

This document attempts to provide a specification of all the valid arguments that a search query can accept.

QUERIES

 curl -XGET http://$server/_search                 -d '{ TOPLEVEL }'
 curl -XGET http://$server/_all/_search            -d '{ TOPLEVEL }'
 curl -XGET http://$server/_all/$types/_search     -d '{ TOPLEVEL }'
 curl -XGET http://$server/$indices/_search        -d '{ TOPLEVEL }'
 curl -XGET http://$server/$indices/$types/_search -d '{ TOPLEVEL }'

COUNT

 curl -XGET http://$server/_count                 -d '{ QUERY_CLAUSE }'
 curl -XGET http://$server/_all/_count            -d '{ QUERY_CLAUSE }'
 curl -XGET http://$server/_all/$types/_count     -d '{ QUERY_CLAUSE }'
 curl -XGET http://$server/$indices/_count        -d '{ QUERY_CLAUSE }'
 curl -XGET http://$server/$indices/$types/_count -d '{ QUERY_CLAUSE }'

DELETE_BY_QUERY

 curl -XDELETE http://$server/_query                 -d '{ QUERY_CLAUSE }'
 curl -XDELETE http://$server/_all/_query            -d '{ QUERY_CLAUSE }'
 curl -XDELETE http://$server/_all/$types/_query     -d '{ QUERY_CLAUSE }'
 curl -XDELETE http://$server/$indices/_query        -d '{ QUERY_CLAUSE }'
 curl -XDELETE http://$server/$indices/$types/_query -d '{ QUERY_CLAUSE }'

DSL DEFINITIONS

TOPLEVEL

   {
    explain:    BOOL,
    from:       INT,
    size:       INT,
    fields:     ["field_1", "field_n"],
    query:      { QUERY_CLAUSE      },
    facets:     { FACETS_CLAUSE     },
    sort:       { SORT_CLAUSE       }
   }

QUERY_CLAUSE

   {
    term:             { TERM_QUERY           }
    | range:          { RANGE_QUERY          }
    | prefix:         { PREFIX_QUERY         }
    | wildcard:       { WILDCARD_QUERY       }
    | matchAll:       { MATCH_ALL_QUERY      }
    | queryString:    { QUERY_STRING_QUERY   }
    | field:          { FIELD_QUERY          }
    | bool:           { BOOLEAN_QUERY        }
    | disMax:         { DISMAX_QUERY         }
    | constantScore:  { CONSTANT_SCORE_QUERY }
    | filteredQuery:  { FILTERED_QUERY       },
   }

FILTER_CLAUSE

   {
    query:            { QUERY_CLAUSE          },
    | term:           { TERM_FILTER           },
    | range:          { RANGE_FILTER          },
    | prefix:         { PREFIX_FILTER         },
    | wildcard:       { WILDCARD_FILTER       },
    | bool:           { BOOLEAN_FILTER        },
    | constantScore:  { CONSTANT_SCORE_QUERY  }
   }

FACETS_CLAUSE

   {
    $facet_name_1:   { QUERY_CLAUSE },
    $facet_name_n:   ...
   }

SORT_CLAUSE

   [
      $fieldname_1 | "score
    | { $fieldname_1 : { reverse: BOOL }},
      ...
   ]

TERM_FILTER

   { $fieldname:  VALUE_1 }

TERM_QUERY

   { $fieldname:  VALUE_1 }
 | { $fieldname: { value: VALUE, boost: FLOAT } }

PREFIX_FILTER

   { $fieldname:  STRING}

PREFIX_QUERY

   { $fieldname:  STRING}
 | { $fieldname: { prefix: STRING, boost: FLOAT } }

WILDCARD_FILTER

   { $fieldname:   STRING }

WILDCARD_QUERY

   { $fieldname:   STRING }
 | { $fieldname: { wildcard: STRING, boost: FLOAT } }

MATCH_ALL_QUERY

   {}
 | { boost:  FLOAT }

RANGE_FILTER

    {   $fieldname:  {
            from:           INT | FLOAT | STRING | DATETIME,
            to:             INT | FLOAT | STRING | DATETIME,
            includeLower:   BOOL,
            includeUpper:   BOOL,
    }}

RANGE_QUERY

    {   $fieldname:  {
            from:           INT | FLOAT | STRING | DATETIME,
            to:             INT | FLOAT | STRING | DATETIME,
            includeLower:   BOOL
            includeUpper:   BOOL
            boost:          FLOAT
    }}

BOOLEAN_FILTER

    {
        must:     { FILTER_CLAUSE } | [ { FILTER_CLAUSE }, ... ],
        should:   { FILTER_CLAUSE } | [ { FILTER_CLAUSE }, ... ],
        mustNot:  { FILTER_CLAUSE } | [ { FILTER_CLAUSE }, ... ],

        minimumNumberShouldMatch:   INT
    }

BOOLEAN_QUERY

    {
        must:     { QUERY_CLAUSE} | [ { QUERY_CLAUSE }, ... ],
        should:   { QUERY_CLAUSE} | [ { QUERY_CLAUSE }, ... ],
        mustNot:  { QUERY_CLAUSE} | [ { QUERY_CLAUSE }, ... ],

        boost:    FLOAT,
        minimumNumberShouldMatch:   INT
    }

DISMAX_QUERY

    {
        queries:                [ { QUERY_CLAUSE }, ... ],
        tieBreakerMultiplier:   FLOAT,
        boost:                  FLOAT
    }

CONSTANT_SCORE_QUERY

    {
        filter: { FILTER_CLAUSE }
        boost:  FLOAT
    }

FILTERED_QUERY

    {
        query:  { QUERY_CLAUSE       },        filter: { FILTER_CLAUSE, ... }
    }

QUERY_STRING_QUERY:

   {
    query:                      STRING,

    defaultField:               $fieldname,
    fields:                     [$field_1, $field_n],
    useDisMax:                  BOOL,
    tieBreaker:                 $field_1

    defaultOperator:            "AND" | "OR",
    analyzer:                   STRING,
    allowLeadingWildcard:       BOOL,
    lowercaseExpandedTerms:     BOOL,
    enablePositionIncrements:   BOOL,
    fuzzyPrefixLength:          BOOL,
    fuzzyMinSim:                FLOAT,
    phraseSlop:                 INT,
    boost:                      FLOAT,
    escape:                     BOOLEAN
   }

FIELD_QUERY: { $fieldname: STRING } | { $fieldname: { query: STRING, defaultOperator: "AND" | "OR", analyzer: STRING, allowLeadingWildcard: BOOL, lowercaseExpandedTerms: BOOL, enablePositionIncrements: BOOL, fuzzyPrefixLength: BOOL, fuzzyMinSim: FLOAT, phraseSlop: INT, boost: FLOAT, escape: BOOLEAN

     }
   }

BASE TYPES

   - BOOL:      true | false
   - INT:       integer  eg 5
   - FLOAT:     float    eg 1.2
   - STRING:    text     eg "foo"
   - DATETIME:  dates and times
                eg "2010-02-31T13:30:45", "2010-02-31", "13:30:45"
   - VALUE:     BOOL | INT | FLOAT | STRING | DATETIME