本文主要是介绍ES通配符查询慢优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用ES查询遇到的坑:
当为空字符串查询** 时速度超慢
原始查询条件:
生成的查询语句:
查询语句
http://11.11.11.11:9100/
data_aa-2018.08/category_goods_1_day/_search POST
{"from" : 0,"size" : 10,"query" : {"bool" : {"must" : [ {"query_string" : {"query" : "100000253821","fields" : [ "pid" ],"default_operator" : "and"}},{"query_string" : {"query" : "**","fields" : [ "goodsName" ],"analyze_wildcard" : true}} ]}},"sort" : [ {"analyzeDate" : {"order" : "desc"}} ]}
结论:
当为空字符串查询** 时速度超慢,为单个*或中间有字符的时候都不慢
方案:
优化查询为空的时候不加此查询条件:
效率提升10被以上
遇到同样一篇涉及ES通配符查询的文章: 后续学习
https://www.cnblogs.com/raoshaoquan/p/7083844.html
这篇关于ES通配符查询慢优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!