2017-02-16 114 views
0

我希望做的是排除結果是不符合條件或anothor條件過濾搜索:elasticsearch:做應該到過濾

我想一個應該做的到的過濾器,但它失敗:

POST /my_index/_search 
{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "should": [ 
      { 
       "match": { 
       "type1_title": "searched match" 
       } 
      }, 
      { 
       "match": { 
       "type2_title": "searched match" 
       } 
      } 
      ] 
     } 
     ] 
    } 
    } 
} 

它引發的錯誤:

"error": { 
    "root_cause": [ 
     { 
     "type": "parsing_exception", 
     "reason": "[should] query malformed, no start_object after query name", 
     "line": 9, 
     "col": 21 
     } 
    ], 
    "type": "parsing_exception", 
    "reason": "[should] query malformed, no start_object after query name", 
    "line": 9, 
    "col": 21 
    }, 
    "status": 400 
} 

你知道,如果我們可以做一個或一個過濾器?

回答

1

爲什麼不乾脆bool/should,沒有必要爲filter這裏

POST /my_index/_search 
{ 
    "query": { 
    "bool": { 
      "minimum_should_match": 1, 
      "should": [ 
      { 
       "match": { 
       "type1_title": "searched match" 
       } 
      }, 
      { 
       "match": { 
       "type2_title": "searched match" 
       } 
      } 
      ] 
    } 
    } 
} 

如果你真的想保持bool/filter/should結構,那麼你需要做的是這樣的:

POST /my_index/_search 
{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
     "bool": { 
      "should": [ 
      { 
       "match": { 
       "type1_title": "searched match" 
       } 
      }, 
      { 
       "match": { 
       "type2_title": "searched match" 
       } 
      } 
      ] 
     } 
     } 
     ] 
    } 
    } 
} 
+0

謝謝你,你是正確的,但我給了一個簡單的例子。我真的想做一個或在一個過濾器。你知道它是否是一個功能嗎? –

+1

'應該是一個OR過濾器 – Val

+0

我已經更新了我的答案,如果你真的想保留過濾器 – Val