【Elasticsearch】ES查询出满足以下其中任意一个条件的订单
需求:最近测试经理给我这边提出一个需求,大致可以描述为查询出" 购买的商品名称中包含’测试’ “、” 订单的收货地址包含’B360’ "、“收货人手机号为测试人员的手机号”;文章来源:https://www.toymoban.com/news/detail-605121.html
一、实现方案
当时评估了两种方案:
①、直接从数据库中查询;
②、从ES中查询;
方案①:由于订单的收货地址是存在扩展字段中的,商品名称也需要连表查询,且从数据中查询性能也较差;故选择方案②。
二、具体实现
①、购买的商品名称中包含’测试’,一开始用的match去查询,所以ES在筛选商品数据时,会把"测试",拆成’测’、'试’去匹配数据,后来百度后才知道若想不分词查询用的是match_phrase,这个在使用时,一定要注意;
②、满足任意条件,用的ES语句是**“minimum_should_match”: 1**
③、所以整体的ES查询语句,如下所示:文章来源地址https://www.toymoban.com/news/detail-605121.html
"query": {
"bool": {
"minimum_should_match": 1,
"should": [{
"match_phrase": {
"TradeOrderLine_itemTitle": "测试"
}
},
{
"match_phrase": {
"TradeOrderSDO_queryIndex": "B360"
}
},
{
"match_phrase": {
"TradeOrderSDO_queryIndex": "19683657777"
}
}
],
"adjust_pure_negative": True,
"boost": 1.0
}
},
"size": 10000
}
到了这里,关于【Elasticsearch】ES查询出满足以下其中任意一个条件的订单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!