ES|QL Search functions
Use these functions for full-text search and semantic search.
Get started with ES|QL for search use cases with our hands-on tutorial.
Full text functions can be used to match multivalued fields. A multivalued field that contains a value that matches a full text query is considered to match the query.
Full text functions are significantly more performant for text search use cases on large data sets than using pattern matching or regular expressions with LIKE
or RLIKE
See full text search limitations for information on the limitations of full text search.
ES|QL supports these full-text search functions:
Do not use on production environments. This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
Syntax
Parameters
query
-
Query string in KQL query string format.
Description
Performs a KQL query. Returns true if the provided KQL query string matches the row.
Supported types
query | result |
---|---|
keyword | boolean |
text | boolean |
Example
FROM books
| WHERE KQL("author: Faulkner")
book_no:keyword | author:text |
---|---|
2378 | [Carol Faulkner, Holly Byers Ochoa, Lucretia Mott] |
2713 | William Faulkner |
2847 | Colleen Faulkner |
2883 | William Faulkner |
3293 | Danny Faulkner |
Do not use on production environments. This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
Support for optional named parameters is only available in serverless, or in a future Elasticsearch release
Syntax
Parameters
field
- Field that the query will target.
query
- Value to find in the provided field.
options
-
(Optional) Match additional options as function named parameters. See match query for more information.
Description
Use MATCH
to perform a match query on the specified field. Using MATCH
is equivalent to using the match
query in the Elasticsearch Query DSL. Match can be used on fields from the text family like text and semantic_text, as well as other field types like keyword, boolean, dates, and numeric types. Match can use function named parameters to specify additional options for the match query. All match query parameters are supported. For a simplified syntax, you can use the match operator :
operator instead of MATCH
. MATCH
returns true if the provided query matches the row.
Supported types
field | query | options | result |
---|---|---|---|
boolean | boolean | named parameters | boolean |
boolean | keyword | named parameters | boolean |
date | date | named parameters | boolean |
date | keyword | named parameters | boolean |
date_nanos | date_nanos | named parameters | boolean |
date_nanos | keyword | named parameters | boolean |
double | double | named parameters | boolean |
double | integer | named parameters | boolean |
double | keyword | named parameters | boolean |
double | long | named parameters | boolean |
integer | double | named parameters | boolean |
integer | integer | named parameters | boolean |
integer | keyword | named parameters | boolean |
integer | long | named parameters | boolean |
ip | ip | named parameters | boolean |
ip | keyword | named parameters | boolean |
keyword | keyword | named parameters | boolean |
long | double | named parameters | boolean |
long | integer | named parameters | boolean |
long | keyword | named parameters | boolean |
long | long | named parameters | boolean |
text | keyword | named parameters | boolean |
unsigned_long | double | named parameters | boolean |
unsigned_long | integer | named parameters | boolean |
unsigned_long | keyword | named parameters | boolean |
unsigned_long | long | named parameters | boolean |
unsigned_long | unsigned_long | named parameters | boolean |
version | keyword | named parameters | boolean |
version | version | named parameters | boolean |
Supported function named parameters
fuzziness
- (keyword) Maximum edit distance allowed for matching.
auto_generate_synonyms_phrase_query
- (boolean) If true, match phrase queries are automatically created for multi-term synonyms. Defaults to true.
analyzer
- (keyword) Analyzer used to convert the text in the query value into token. Defaults to the index-time analyzer mapped for the field. If no analyzer is mapped, the index’s default analyzer is used.
minimum_should_match
- (integer) Minimum number of clauses that must match for a document to be returned.
zero_terms_query
- (keyword) Indicates whether all documents or none are returned if the analyzer removes all tokens, such as when using a stop filter. Defaults to none.
boost
- (float) Floating point number used to decrease or increase the relevance scores of the query. Defaults to 1.0.
fuzzy_transpositions
- (boolean) If true, edits for fuzzy matching include transpositions of two adjacent characters (ab → ba). Defaults to true.
fuzzy_rewrite
- (keyword) Method used to rewrite the query. See the rewrite parameter for valid values and more information. If the fuzziness parameter is not 0, the match query uses a fuzzy_rewrite method of top_terms_blended_freqs_${max_expansions} by default.
prefix_length
- (integer) Number of beginning characters left unchanged for fuzzy matching. Defaults to 0.
lenient
- (boolean) If false, format-based errors, such as providing a text query value for a numeric field, are returned. Defaults to false.
operator
- (keyword) Boolean logic used to interpret text in the query value. Defaults to OR.
max_expansions
-
(integer) Maximum number of terms to which the query will expand. Defaults to 50.
Examples
FROM books
| WHERE MATCH(author, "Faulkner")
book_no:keyword | author:text |
---|---|
2378 | [Carol Faulkner, Holly Byers Ochoa, Lucretia Mott] |
2713 | William Faulkner |
2847 | Colleen Faulkner |
2883 | William Faulkner |
3293 | Danny Faulkner |
FROM books
| WHERE MATCH(title, "Hobbit Back Again", {"operator": "AND"})
| KEEP title;
title:text |
---|
The Hobbit or There and Back Again |
Do not use on production environments. This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
Support for optional named parameters is only available in serverless, or in a future Elasticsearch release
Syntax
Parameters
query
- Query string in Lucene query string format.
options
-
(Optional) Additional options for Query String as function named parameters. See query string query for more information.
Description
Performs a query string query. Returns true if the provided query string matches the row.
Supported types
query | options | result |
---|---|---|
keyword | named parameters | boolean |
text | named parameters | boolean |
Supported function named parameters
max_determinized_states
- (integer) Maximum number of automaton states required for the query. Default is 10000.
fuzziness
- (keyword) Maximum edit distance allowed for matching.
auto_generate_synonyms_phrase_query
- (boolean) If true, match phrase queries are automatically created for multi-term synonyms. Defaults to true.
phrase_slop
- (integer) Maximum number of positions allowed between matching tokens for phrases. Defaults to 0 (which means exact matches are required).
default_field
- (keyword) Default field to search if no field is provided in the query string. Supports wildcards (*).
allow_leading_wildcard
- (boolean) If true, the wildcard characters * and ? are allowed as the first character of the query string. Defaults to true.
minimum_should_match
- (string) Minimum number of clauses that must match for a document to be returned.
fuzzy_transpositions
- (boolean) If true, edits for fuzzy matching include transpositions of two adjacent characters (ab → ba). Defaults to true.
fuzzy_prefix_length
- (integer) Number of beginning characters left unchanged for fuzzy matching. Defaults to 0.
time_zone
- (keyword) Coordinated Universal Time (UTC) offset or IANA time zone used to convert date values in the query string to UTC.
lenient
- (boolean) If false, format-based errors, such as providing a text query value for a numeric field, are returned. Defaults to false.
rewrite
- (keyword) Method used to rewrite the query.
default_operator
- (keyword) Default boolean logic used to interpret text in the query string if no operators are specified.
analyzer
- (keyword) Analyzer used to convert the text in the query value into token. Defaults to the index-time analyzer mapped for the default_field.
fuzzy_max_expansions
- (integer) Maximum number of terms to which the query expands for fuzzy matching. Defaults to 50.
quote_analyzer
- (keyword) Analyzer used to convert quoted text in the query string into tokens. Defaults to the search_quote_analyzer mapped for the default_field.
allow_wildcard
- (boolean) If true, the query attempts to analyze wildcard terms in the query string. Defaults to false.
boost
- (float) Floating point number used to decrease or increase the relevance scores of the query.
quote_field_suffix
- (keyword) Suffix appended to quoted text in the query string.
enable_position_increments
- (boolean) If true, enable position increments in queries constructed from a query_string search. Defaults to true.
fields
-
(keyword) Array of fields to search. Supports wildcards (*).
Examples
FROM books
| WHERE QSTR("author: Faulkner")
book_no:keyword | author:text |
---|---|
2378 | [Carol Faulkner, Holly Byers Ochoa, Lucretia Mott] |
2713 | William Faulkner |
2847 | Colleen Faulkner |
2883 | William Faulkner |
3293 | Danny Faulkner |
FROM books
| WHERE QSTR("title: Hobbjt~", {"fuzziness": 2})
book_no:keyword | title:text |
---|---|
4289 | Poems from the Hobbit |
6405 | The Hobbit or There and Back Again |
7480 | The Hobbit |