我正在使用elasticsearch版本6.1.1。我一直在过滤器上下文中运行查询,在我已明确启用查询缓存的索引上。但查询缓存为空。我在elasticsearch讨论论坛(https://discuss.elastic.co/t/query-cache-is-empty/84515)上发现了类似的案例,但没有列出解决方案。根据此处的文档https://www.elastic.co/guide/en/elasticsearch/reference/current/query-cache.html,查询缓存应适用于在筛选器上下文中运行的查询。
在我成功运行之后,
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"filter": [
{ "term": { "status": "true" }}
]
}
}
}
'
这是我得到的查询缓存统计信息:
"indices" : {
"query_cache" : {
"memory_size" : "0b",
"memory_size_in_bytes" : 0,
"total_count" : 0,
"hit_count" : 0,
"miss_count" : 0,
"cache_size" : 0,
"cache_count" : 0,
"evictions" : 0
}
}
答案 0 :(得分:1)
term filter
的 6.x 中存在错误,无法查询缓存。见:
https://github.com/elastic/elasticsearch/pull/27190
因此,您可以尝试使用range filter
或exists
进行查询缓存。并且您的文档需要足够大(我在100k文档中测试)查询缓存。