使用ES查询遇到的坑:
当为空字符串查询** 时速度超慢
原始查询条件:
生成的查询语句:
查询语句
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