为什么我的 elasticsearch 查询缓存是空的?

Why is my elasticsearch query cache empty?

我使用的是 elasticsearch 版本 6.1.1。我一直在 运行ning 查询在我明确启用查询缓存的索引的过滤器上下文中。但是查询缓存是空的。我在 elasticsearch 讨论论坛上发现了一个类似的案例(https://discuss.elastic.co/t/query-cache-is-empty/84515 ), but it doesn't have a solution listed. As per the documentation here, 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
        }
      }

term filter6.x中存在错误,无法查询缓存。见:

https://github.com/elastic/elasticsearch/pull/27190

所以也许您可以尝试 range filterexists 查询缓存 。而且你的文档需要足够大(我在 100k 文档中测试)查询缓存