elasticsearch中设置查询的请求超时时间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了elasticsearch中设置查询的请求超时时间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1815字,纯文字阅读大概需要3分钟。
内容图文
![elasticsearch中设置查询的请求超时时间](/upload/InfoBanner/zyjiaocheng/983/5cb7d9cd5c7c43aebdd846f003182e78.jpg)
参考: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" } } } } '
内容总结
以上是互联网集市为您收集整理的elasticsearch中设置查询的请求超时时间全部内容,希望文章能够帮你解决elasticsearch中设置查询的请求超时时间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。