elasticsearchのquery実行時のcacheについて調べてみた備忘です。
Node Query Cache
- filterクエリに含まれるqueryのみquery実行時にcacheされる
- query cacheはnodeごとに、全shardで共有される
request cache
- sizeが0でないリクエストはcacheされない。0より大きい場合はクエリごとに明示的にcacheの利用を以下のように指定する必要がある。リクエストごとのrequest_cacheはindexごとの設定より優先される。
GET /my_index/_search?request_cache=true
{
"size": 0,
"aggs": {
"popular_colors": {
"terms": {
"field": "colors"
}
}
}
}
-
request cacheは、キーとしてqueryのjson全体を利用する。current timestampや乱数を利用しているscriptが含まれていると、cacheは正常に動作しない。
-
request cacheはshardごとに送られるqueryごとに格納される。