ElasticSearch之Node query cache settings

发布时间 2023-12-11 23:23:01作者: jackieathome

对于filter查询,ElasticSearch提供了缓存查询结果的特性,当缓存中存在满足查询条件要求的数据时,直接从缓存中提取查询结果。
对于ElasticSearch节点,该节点上的所有shard共享同一个缓存区域。
ElasticSearch基于LRU算法来管理缓存中的数据,当空间不足以承载最新的查询操作的结果时,使用LRU算法来剔除掉历史数据,从而保留存储空间用于缓存近期的查询操作的结果数据。
当前ElasticSearch没有提供方法来查看缓存中保留的查询结果。

默认情况下,缓存中保留至多10000个查询操作的结果,占用至多ElasticSearch节点JVM堆内存的10%
合并segment的操作,将导致缓存失效。

indices.queries.cache.size
默认值为10%
允许使用百分比,比如5%,或者绝对数值,比如512mb

修改配置文件elasticsearch.yml,增加如下配置:

indices.queries.cache.size: 5%

或者

indices.queries.cache.size: 512mb

index.queries.cache.enabled
默认值为true
控制是否启用缓存特性,true即开启,false即关闭。
只允许在创建索引时指定,或者关闭索引后指定。

命令样例如下:

curl -X PUT "https://localhost:9200/testindex_004?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "index.number_of_shards": 1,
    "index.number_of_replicas": 1,
    "index.queries.cache.enabled": false
  }
}
' --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果的样例,如下:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "testindex_004"
}

相关资料