elasticsearch\u计数查询请求缓存

csga3l58  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(436)

摘自文件:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/shard-request-cache.html#shard-请求缓存
默认情况下,请求缓存将只缓存搜索请求的结果,其中 size=0 ,所以它不会缓存命中,但会缓存 hits.total , aggregations ,和 suggestions .
现在使用的大多数查询(请参阅date math)都无法缓存。
使用非确定性api调用的脚本化查询,例如 Math.random() 或者 new Date() 未缓存。
但是,如何处理\u count查询_count查询的行为几乎与使用 size=0 ?
我希望请求缓存也能缓存count个查询,但找不到任何有关它的信息。

py49o6xq

py49o6xq1#

如果文档没有说明问题,请转到源代码;-)
在这种情况下,如果我们看看 RestCountAction (即处理 _count 端点),我们可以看到它实际上是在创建 SearchRequestsize: 0 ```
a search request
|
v
SearchRequest countRequest = new SearchRequest(Strings.splitStringByCommaToArray(request.param("index")));
countRequest.indicesOptions(IndicesOptions.fromRequest(request, countRequest.indicesOptions()));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0).trackTotalHits(true);
^
|
with size 0

此外,在构建响应时,我们可以看到 `count` 价值实际上就是 `hits.total` 从 `SearchResponse` :

builder.field("count", response.getHits().getTotalHits().value);

因此,我们可以由此推断count查询实际上也是缓存的。

相关问题