小弟業務sql類似于以下sql:
select * from customer where brandId = 101237 and `name` like '%張三%' and (levelId = 347482700351079424 or ISNULL(levelId)) limit 10;
目前寫出的腳本為:
{
"query": {
"bool": {
"filter": [
{
"term": {
"brandId": 101237
}
},
{
"bool": {
"must_not": {
"term": {
"loginType": 6
}
}
}
},
{
"term": {
"bindFlag": 1
}
},
{
"term": {
"status": 0
}
}
],
"must": [
{
"multi_match": {
"query": "張三",
"fields": [
"name",
"mobile"
],
"operator": "and"
}
},
{
"bool": {
"should": [
{
"terms": {
"levelId": [
347482700351079424
]
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "levelId"
}
}
}
}
]
}
}
]
}
},
"size": 200,
"sort": []
}
問題現狀:
查詢結果不正確(查不到資料),索引中是存在levelId = 347482700351079424 或 levelId為空 的資料,也存在 name 欄位中包含 '張三' 的資料.
已經研究了一晚上 都沒有找到好的解決辦法 ,求大神幫忙看看 萬分感謝:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90430.html
標籤:Web 開發
