-
Notifications
You must be signed in to change notification settings - Fork 24.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New TermsEnum API for discovering terms in the index. (#66452)
New api designed for use by apps like Kibana for auto-complete use cases. A search string is supplied which is used as prefix for matching terms found in a given field in the index. Supported field types are keyword, constant_keyword and flattened. A timeout can limit the amount of time spent looking for matches (default 1s) and an `index_filter` query can limit indices e.g. those in the hot or warm tier by querying the `_tier` field Closes #59137
- Loading branch information
1 parent
c9ca64c
commit 73e0662
Showing
29 changed files
with
2,770 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
[[search-terms-enum]] | ||
=== Terms enum API | ||
|
||
The terms enum API can be used to discover terms in the index that match | ||
a partial string. This is used for auto-complete: | ||
|
||
[source,console] | ||
-------------------------------------------------- | ||
POST stackoverflow/_terms_enum | ||
{ | ||
"field" : "tags", | ||
"string" : "kiba" | ||
} | ||
-------------------------------------------------- | ||
// TEST[setup:stackoverflow] | ||
|
||
|
||
The API returns the following response: | ||
|
||
[source,console-result] | ||
-------------------------------------------------- | ||
{ | ||
"_shards": { | ||
"total": 1, | ||
"successful": 1, | ||
"failed": 0 | ||
}, | ||
"terms": [ | ||
"kibana" | ||
], | ||
"complete" : true | ||
} | ||
-------------------------------------------------- | ||
|
||
The "complete" flag is false if time or space constraints were met and the | ||
set of terms examined was not the full set of available values. | ||
|
||
[[search-terms-enum-api-request]] | ||
==== {api-request-title} | ||
|
||
`GET /<target>/_terms_enum` | ||
|
||
|
||
[[search-terms-enum-api-desc]] | ||
==== {api-description-title} | ||
|
||
The termsenum API can be used to discover terms in the index that begin with the provided | ||
string. It is designed for low-latency look-ups used in auto-complete scenarios. | ||
|
||
|
||
[[search-terms-enum-api-path-params]] | ||
==== {api-path-parms-title} | ||
|
||
`<target>`:: | ||
(Mandatory, string) | ||
Comma-separated list of data streams, indices, and index aliases to search. | ||
Wildcard (`*`) expressions are supported. | ||
+ | ||
To search all data streams or indices in a cluster, omit this parameter or use | ||
`_all` or `*`. | ||
|
||
[[search-terms-enum-api-request-body]] | ||
==== {api-request-body-title} | ||
|
||
[[terms-enum-field-param]] | ||
`field`:: | ||
(Mandatory, string) | ||
Which field to match | ||
|
||
[[terms-enum-string-param]] | ||
`string`:: | ||
(Mandatory, string) | ||
The string to match at the start of indexed terms | ||
|
||
[[terms-enum-size-param]] | ||
`size`:: | ||
(Optional, integer) | ||
How many matching terms to return. Defaults to 10 | ||
|
||
[[terms-enum-timeout-param]] | ||
`timeout`:: | ||
(Optional, <<time-units,time value>>) | ||
The maximum length of time to spend collecting results. Defaults to "1s" (one second). | ||
If the timeout is exceeded the `complete` flag set to false in the response and the results may | ||
be partial or empty. | ||
|
||
[[terms-enum-case_insensitive-param]] | ||
`case_insensitive`:: | ||
(Optional, boolean) | ||
When true the provided search string is matched against index terms without case sensitivity. | ||
Defaults to false. | ||
|
||
[[terms-enum-index_filter-param]] | ||
`index_filter`:: | ||
(Optional, <<query-dsl,query object>> Allows to filter an index shard if the provided | ||
query rewrites to `match_none`. | ||
|
35 changes: 35 additions & 0 deletions
35
rest-api-spec/src/main/resources/rest-api-spec/api/termsenum.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
{ | ||
"termsenum":{ | ||
"documentation":{ | ||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/terms-enum.html", | ||
"description": "The terms enum API can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios." | ||
}, | ||
"stability":"beta", | ||
"visibility":"public", | ||
"headers":{ | ||
"accept": [ "application/json"], | ||
"content_type": ["application/json"] | ||
}, | ||
"url":{ | ||
"paths":[ | ||
{ | ||
"path": "/{index}/_terms_enum", | ||
"methods": [ | ||
"GET", | ||
"POST" | ||
], | ||
"parts": { | ||
"index": { | ||
"type": "list", | ||
"description": "A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices" | ||
} | ||
} | ||
} | ||
] | ||
}, | ||
"params":{}, | ||
"body":{ | ||
"description":"field name, string which is the prefix expected in matching terms, timeout and size for max number of results" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.