elasticsearch中设置查询的请求超时时间

参考:https://www.phpmianshi.com/?id=251

背景

因为我们的项目是用的php,为了防止调用搜索时,请求处理时间太长,导致php-fpm占满,所以需要对外部接口设置请求的超时时间,避免过多的超时请求,我们可以用过对es的参数限制,设置超时时间

search 请求参数

from

从索引的第几条数据开始返回,默认是 0;

size

返回多少条数据,默认是 10。

注意:Elasticsearch 集群实际是需要给 coordinate node 返回 shards number * (from + size) 条数据,然后在单机上进行排序,最后给客户端返回这个 size 大小的数据的。所以请谨慎使用 from 和 size 参数。

此外,Elasticsearch 2.x 还新增了一个索引级别的动态控制配置项:index.max_result_window,默认为 10000。即 from + size 大于 10000 的话,Elasticsearch 直接拒绝掉这次请求不进行具体搜索,以保护节点。

另外,Elasticsearch 2.x 还提供了一个小优化:当设置 "size":0 时,自动改变 search_type 为 count。跳过搜索过程的 fetch 阶段。

timeout

coordinate node 等待超时时间。到达该阈值后,coordinate node 直接把当前收到的数据返回给客户端,不再继续等待 data node 后续的返回了。

注意:这个参数只是为了配合客户端程序,并不能取消掉 data node 上搜索任务还在继续运行和占用资源。

terminate_after

各 data node 上,扫描单个分片时,找到多少条记录后,就认为足够了。这个参数可以切实保护 data node 上搜索任务不会长期运行和占用资源。但是也就意味着搜索范围没有覆盖全部索引,是一个抽样数据。准确率是不好判断的。

request_cache

各 data node 上,在分片级别,对请求的响应(仅限于 hits.total 数值、aggregation 和 suggestion 的结果集)做的缓存。注意:这个缓存的键值要求很严格,请求的 JSON 必须一字不易,缓存才能命中。

另外,request_cache 参数不能写在请求 JSON 里,只能以 URL 参数的形式存在。示例如下:

curl -XPOST http://localhost:9200/_search?request_cache=true -d '

{

"size" : 0,

"timeout" : "120s",

"terminate_after" : 1000000,

"query" : { "match_all" : {} },

"aggs" : { "terms" : { "terms" : { "field" : "keyname" } } }

}

'


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/tiancityycf/article/details/116722533

相关推荐
Biehmltym6 小时前
【AI】09AI Agent LLM → Streaming → Session 记录 的完整链路
大数据·人工智能·elasticsearch
小湘西8 小时前
Elasticsearch 的一些默认配置上下限
java·大数据·elasticsearch
Dxy123931021610 小时前
Elasticsearch 8如何做好标题搜索
大数据·elasticsearch
斯普信云原生组11 小时前
Elasticsearch(ES) 内存 CPU 过高问题排查报告
大数据·elasticsearch·搜索引擎
弘毅 失败的 mian12 小时前
Git 分支管理
大数据·经验分享·笔记·git·elasticsearch
阿坤带你走近大数据13 小时前
Elasticsearch(ES)的基本概念、架构及基本使用介绍
大数据·elasticsearch
Elastic 中国社区官方博客13 小时前
使用 Elasticsearch 中的结构化输出创建可靠的 agents
大数据·人工智能·elk·elasticsearch·搜索引擎·ai·全文检索
G皮T14 小时前
【Elasticsearch】查询性能调优(六):track_total_hits 影响返回结果的相关性排序吗
大数据·数据库·elasticsearch·搜索引擎·全文检索·性能·opensearch
LCG米15 小时前
嵌入式Linux系统构建:为STM32MP157移植Buildroot并开发温湿度采集驱动
linux·stm32·elasticsearch
phil zhang15 小时前
Celer:为大型C/C++项目打造的极简包管理器
开发语言·c++·elasticsearch