195 lines
4.9 KiB
Plaintext
195 lines
4.9 KiB
Plaintext
[[indices-warmers]]
|
|
== Warmers
|
|
|
|
Index warming allows to run registered search requests to warm up the index
|
|
before it is available for search. With the near real time aspect of search,
|
|
cold data (segments) will be warmed up before they become available for search.
|
|
This includes things such as the filter cache, filesystem cache, and loading
|
|
field data for fields.
|
|
|
|
Warmup searches typically include requests that require heavy loading of
|
|
data, such as aggregations or sorting on specific fields. The warmup APIs
|
|
allows to register warmup (search) under specific names, remove them,
|
|
and get them.
|
|
|
|
Index warmup can be disabled by setting `index.warmer.enabled` to
|
|
`false`. It is supported as a realtime setting using update settings
|
|
API. This can be handy when doing initial bulk indexing: disable pre
|
|
registered warmers to make indexing faster and less expensive and then
|
|
enable it.
|
|
|
|
[float]
|
|
[[creation]]
|
|
=== Index Creation / Templates
|
|
|
|
Warmers can be registered when an index gets created, for example:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPUT localhost:9200/test -d '{
|
|
"warmers" : {
|
|
"warmer_1" : {
|
|
"types" : [],
|
|
"source" : {
|
|
"query" : {
|
|
...
|
|
},
|
|
"aggs" : {
|
|
...
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
--------------------------------------------------
|
|
|
|
Or, in an index template:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPUT localhost:9200/_template/template_1 -d '
|
|
{
|
|
"template" : "te*",
|
|
"warmers" : {
|
|
"warmer_1" : {
|
|
"types" : [],
|
|
"source" : {
|
|
"query" : {
|
|
...
|
|
},
|
|
"aggs" : {
|
|
...
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
--------------------------------------------------
|
|
|
|
On the same level as `types` and `source`, the `request_cache` flag is supported
|
|
to enable request caching for the warmed search request. If not specified, it will
|
|
use the index level configuration of query caching.
|
|
|
|
[float]
|
|
[[warmer-adding]]
|
|
=== Put Warmer
|
|
|
|
Allows to put a warmup search request on a specific index (or indices),
|
|
with the body composing of a regular search request. Types can be
|
|
provided as part of the URI if the search request is designed to be run
|
|
only against the specific types.
|
|
|
|
Here is an example that registers a warmup called `warmer_1` against
|
|
index `test` (can be alias or several indices), for a search request
|
|
that runs against all types:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPUT localhost:9200/test/_warmer/warmer_1 -d '{
|
|
"query" : {
|
|
"match_all" : {}
|
|
},
|
|
"aggs" : {
|
|
"aggs_1" : {
|
|
"terms" : {
|
|
"field" : "field"
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
--------------------------------------------------
|
|
|
|
And an example that registers a warmup against specific types:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPUT localhost:9200/test/type1/_warmer/warmer_1 -d '{
|
|
"query" : {
|
|
"match_all" : {}
|
|
},
|
|
"aggs" : {
|
|
"aggs_1" : {
|
|
"terms" : {
|
|
"field" : "field"
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
--------------------------------------------------
|
|
|
|
All options:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
|
|
PUT _warmer/{warmer_name}
|
|
|
|
PUT /{index}/_warmer/{warmer_name}
|
|
|
|
PUT /{index}/{type}/_warmer/{warmer_name}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
where
|
|
|
|
[horizontal]
|
|
`{index}`:: `* | _all | glob pattern | name1, name2, …`
|
|
|
|
`{type}`:: `* | _all | glob pattern | name1, name2, …`
|
|
|
|
Instead of `_warmer` you can also use the plural `_warmers`.
|
|
|
|
The `request_cache` parameter can be used to enable request caching for
|
|
the search request. If not specified, it will use the index level configuration
|
|
of query caching.
|
|
|
|
|
|
[float]
|
|
[[removing]]
|
|
=== Delete Warmers
|
|
|
|
Warmers can be deleted using the following endpoint:
|
|
|
|
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
|
|
[DELETE] /{index}/_warmer/{name}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
where
|
|
|
|
[horizontal]
|
|
`{index}`:: `* | _all | glob pattern | name1, name2, …`
|
|
|
|
`{name}`:: `* | _all | glob pattern | name1, name2, …`
|
|
|
|
Instead of `_warmer` you can also use the plural `_warmers`.
|
|
|
|
[float]
|
|
[[warmer-retrieving]]
|
|
=== GETting Warmer
|
|
|
|
Getting a warmer for specific index (or alias, or several indices) based
|
|
on its name. The provided name can be a simple wildcard expression or
|
|
omitted to get all warmers.
|
|
|
|
Some examples:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
# get warmer named warmer_1 on test index
|
|
curl -XGET localhost:9200/test/_warmer/warmer_1
|
|
|
|
# get all warmers that start with warm on test index
|
|
curl -XGET localhost:9200/test/_warmer/warm*
|
|
|
|
# get all warmers for test index
|
|
curl -XGET localhost:9200/test/_warmer/
|
|
--------------------------------------------------
|
|
|