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

时间:2018-01-31 07:04:17

标签: elasticsearch caching elasticsearch-5 query-cache

我正在使用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
        }
      }

1 个答案:

答案 0 :(得分:1)

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

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

因此,您可以尝试使用range filterexists进行查询缓存。并且您的文档需要足够大(我在100k文档中测试)查询缓存