【Elasticsearch】ES查詢出滿足以下其中任意一個條件的訂單
需求:最近測試經(jīng)理給我這邊提出一個需求,大致可以描述為查詢出" 購買的商品名稱中包含’測試’ “、” 訂單的收貨地址包含’B360’ "、“收貨人手機號為測試人員的手機號”;文章來源:http://www.zghlxwxcb.cn/news/detail-605121.html
一、實現(xiàn)方案
當時評估了兩種方案:
①、直接從數(shù)據(jù)庫中查詢;
②、從ES中查詢;
方案①:由于訂單的收貨地址是存在擴展字段中的,商品名稱也需要連表查詢,且從數(shù)據(jù)中查詢性能也較差;故選擇方案②。
二、具體實現(xiàn)
①、購買的商品名稱中包含’測試’,一開始用的match去查詢,所以ES在篩選商品數(shù)據(jù)時,會把"測試",拆成’測’、'試’去匹配數(shù)據(jù),后來百度后才知道若想不分詞查詢用的是match_phrase,這個在使用時,一定要注意;
②、滿足任意條件,用的ES語句是**“minimum_should_match”: 1**
③、所以整體的ES查詢語句,如下所示:文章來源地址http://www.zghlxwxcb.cn/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查詢出滿足以下其中任意一個條件的訂單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!