即使在设置request\u cache=true之后,我也没有看到昂贵的es查询的性能提高

bqucvtff  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(2)|浏览(476)

为了继续我对这个答案的评论,我有以下设置:
使用read-heavy es-index(它也会获取索引请求,但比率为25:1)和使用1秒的刷新间隔,并尝试通过显式设置此参数来提高查询性能,以便缓存搜索查询 hits 但没有看到任何性能提升。
另外,我看到hits.total也在变化,因为我的索引也得到了写请求,我觉得这可能是原因,因为碎片正在刷新,缓存正在失效。
请确认我的假设是否正确,是否有任何方法可以使用es中的各种缓存设置来提高性能?
注意:我使用了中提到的监视缓存部分https://opensourceconnections.com/blog/2017/07/10/caching_in_elasticsearch/ 下面是我拿到的订单。
url:- http://:9200/\u cat/nodes?v&h=querycachememory,querycacheevictions,requestcachememory,requestcachehitcount,requestcachemisscont,flushtottal,flushtottaltime

queryCacheMemory queryCacheEvictions flushTotal flushTotalTime 
              0b                   0     353204           1.9h 
              0b                   0          0             0s 
              0b                   0     464814           2.2h 
              0b                   0     292127           1.6h 
              0b                   0     409013           2.1h 
              0b                   0     394303             2h 
              0b                   0     369545           2.1h 
              0b                   0          0             0s 
              0b                   0          0             0s

请注意,即使在 requestCacheMemory , hit 以及 miss 算一下,它不包括在o/p中

zxlwwiss

zxlwwiss1#

查询字符串参数 request_cache=true 仅当请求缓存在索引级别被禁用时才有用,但由于它在默认情况下处于启用状态,因此指定该参数无效,除非您在索引级别显式禁用了缓存。
此外,您确定总是发送完全相同的json查询吗?我之所以这么问是因为缓存键是在json查询中创建的,所以即使查询中有一个字符发生了变化,键也不会相同。
最后,您可以通过 checkout 这个端点来检查请求缓存是如何命中还是丢失的

GET your-index/_stats/request_cache?human

什么在增加?这个 hit_count 或者 miss_count ?

qqrboqgw

qqrboqgw2#

另外,为什么刷新间隔保持在1秒?尝试30-60秒,这样可以降低负载,也不会创建那么多要合并的段-我最近正在研究合并,我认为它会使某些类型的缓存失效,尽管可能不是一般的查询缓存。

相关问题