ElasticSearch之Node query cache settings

对于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"
}

相关资料

### 基于 Elasticsearch 的商品搜索功能最佳实践 #### 商品搜索的核心需求 在构建基于 Elasticsearch 的商品搜索功能时,核心需求通常包括快速响应、高可用性和精确匹配。为了满足这些需求,可以从以下几个方面入手: #### 数据建模与映射设计 数据模型的设计直接影响查询性能和结果质量。应确保 `mappings` 定义清晰合理[^1]。对于商品搜索而言,常见的字段可能包括名称、描述、价格、类别等。以下是示例配置: ```json PUT /products { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings": { "properties": { "name": { "type": "text", "analyzer": "standard" }, "description": { "type": "text", "analyzer": "english" }, "price": { "type": "float" }, "category": { "type": "keyword" } } } } ``` 通过合理的分词器(Analyzer)选择可以提升全文检索效果[^2]。 #### 性能优化策略 针对大规模商品数据集,需考虑以下几点来提高效率并减少延迟时间: - **调整分片数量**:根据实际存储量设定合适的 shard 数目以平衡负载分布。 - **启用缓存机制**:利用 query cache 和 fielddata cache 提升重复请求的速度。 - **限制返回字段**:仅获取必要的属性而非整个文档内容 `_source=false&fields=...`。 另外,在面对大量写入操作期间可能出现的恢复瓶颈问题时,则可通过调节相关参数如 `node_concurrent_recoveries` 来缓解压力状况[^3]。 #### 查询语句编写技巧 有效的DSL表达能够显著改善用户体验。下面展示了一个简单的多条件组合实例用于演示目的: ```json GET /products/_search { "query": { "bool": { "must": [ {"match": {"name": "laptop"}}, {"range": {"price": {"gte": 800, "lte": 1500}}} ], "filter": [{"term": {"category": "electronics"}}] } } } ``` 此脚本允许用户查找属于电子类别的笔记本电脑产品,并限定其售价区间范围。 #### 故障排查建议 如果遇到诸如索引创建失败等问题,请先确认服务状态是否稳定运行;其次审查 mapping 文件是否存在错误之处 。当集群表现异常缓慢或者停滞不前的时候 ,则有必要审视一下 recovery settings 是否恰当设置从而避免资源耗尽风险 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小南家的青蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值