[es]ES数据查询调优2
【摘要】
image.png
查询语句优化
查询语句优化的内容包括:查询范围,单次查询数量等。
根据实际业务需求去规划查询范围,查询越少的字段越快,过大的查询范围不仅会导致查询效率低,而且会使Elasticsearch集群资源耗费急剧增加,甚至可能造成集群崩溃。通过_source参数可以控制返回字段信息,尽量避免读取大字段;
单次查询数量限制是为了保证内存不会被查询内存大量...
查询语句优化
查询语句优化的内容包括:查询范围,单次查询数量等。
- 根据实际业务需求去规划查询范围,查询越少的字段越快,过大的查询范围不仅会导致查询效率低,而且会使Elasticsearch集群资源耗费急剧增加,甚至可能造成集群崩溃。通过_source参数可以控制返回字段信息,尽量避免读取大字段;
- 单次查询数量限制是为了保证内存不会被查询内存大量占用,Elasticsearch默认的查询请求通常返回排序后的前10条记录,最多一次读取10000条记录。通过from和size参数控制读取记录范围,避免一次读取过多的记录。一次性查询大于10000条的数据,使用scroll查询,请参考[游标查询(scroll)]
查询示例:
curl -XGET "http://ip:httpport/myindex-001/_search?pretty" -H 'Content-Type: application/json' -d'
{
"from": 0,
"size": 10,
"_source": "age",
"query": { "match": { "age": "56" }
},
"sort": [ { "age": { "order": "asc" } }
]
}'
游标查询
Elasticsearch为了避免深分页,不允许使用分页(from&size)查询10000条以后的数据,需要使用游标(scroll)查询。
安全模式下scroll查询示例:
curl -XGET"http://ip:httpport/myindex-001/_search?scroll=1m&pretty" -H 'Content-Type: application/json' -d'
{
"query": { "match": { "age": "36" }
},
"size":1000
}'
注意
使用scroll查询,应该在初始搜索请求中指定scroll参数,这个参数告诉Elasticsearch保持游标窗口期多长时间。例如:scroll=1m,表示1分钟。
优化scroll:
在一般场景下,scroll用来取得排序好的大量数据,但很多时候只需要返回数据,这时候可以对scroll进行优化。使用_doc去sort返回的结果不会有排序,此时执行效率最快。`
在设置开启scroll时,设置了一个scroll的存活时间,但是如果能够在使用完及时关闭,可以提早释放资源,降低Elasticsearch的负担。
curl -XDELETE "http://ip:httpport/_search/scroll=1m&pretty" -H 'Content-Type: application/json' -d'
{
"scroll_id":"DnF1ZXJ5VGhlbkZldGNoMgAAAAAAAABPFlFHZzExcFdnUWJDU0d5bU=="
}'
文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。
原文链接:www.jianshu.com/p/ebdaa23e7492
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)