如何解决Elasticsearch _count查询请求缓存
默认情况下,请求缓存将仅缓存
size=0
处的搜索请求结果,因此不会缓存点击,但会缓存hits.total
,aggregations
和{{ 1}}。现在使用的大多数查询(请参见日期数学)无法缓存。
使用非确定性API调用的脚本查询(例如
suggestions
或Math.random()
)不会被缓存。
但是,如何处理_count个查询? _count查询的行为与使用new Date()
的_search查询几乎完全相同?
我希望请求缓存也可以缓存计数查询,但是找不到有关它的任何信息。
解决方法
只要文档没有说明,请转到源代码;-)
在这种情况下,如果我们查看RestCountAction
的源(即处理_count
端点的类),我们可以看到它的实际作用是创建一个SearchRequest
size: 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
此外,当building the response时,我们可以看到count
的值实际上是hits.total
中的SearchResponse
的值:
builder.field("count",response.getHits().getTotalHits().value);
因此,从中我们可以推断出实际上也缓存了数量查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。