0
假設我有三個字段,A,B和C.C是一個存儲電子郵件的分析字段,我需要一個完整匹配。如何在Elasticsearch中創建嵌套的AND + OR查詢,涉及分析和未分析的字段?
在SQL方面,我需要編寫一個查詢一樣,
select * from table where A = '123' OR (B = '456' AND A = '') OR (C = '[email protected]' AND A = '' AND B = '');
我寫了下面的查詢,在我第一次嘗試,但我得到一個解析異常錯誤。
No filter registered for [match]];
當我刪除與匹配查詢塊,我開始取得成果,這使得我以爲我可以不寫查詢這個樣子。
如果您有任何建議,請告訴我。
{ "size": 25, "query": {
"filtered": {
"filter":{
"or":[
{"term": {"A": "123"}},
{
"and":[
{"term": {"B": "456"}},
{"term": {"A": ""}}
]
},
{
"and":[
{
"match":{
"C":{
"query": "[email protected]",
"operator": "AND"
}
}
},
{"term": {"A": ""}},
{"term": {"B": ""}}
]
}
]
}
} } }
的可能的複製[ElasticSearch:無過濾器\註冊[匹配\] \](http://stackoverflow.com/問題/ 21116803/elasticsearch-無過濾註冊換匹配) – user2441151