2015-09-13 81 views
0

予有需要從INDEX其中FIELD1 IN( 'A', 'B', 'C')和FIELD2 IN( 'd',「E執行類似查詢以如何在Elastic中的查詢中編寫此代碼?

選擇」, 'F')AND 字段3 IN( 'G', 'H', 'I')

我使用彈性從node.js中以執行該查詢。我已經創建了索引和映射。

感謝您的幫助!

回答

0

我想通了,我寫的查詢爲:

query: { 
       "bool": { 
        "must": [ 
         { 
          "bool": { 
           "should": [ 
            {"term": {"field1": "a"}}, 
            {"term": {"field1": "b"}} 
           ] 
          } 
         }, 
         { 
          "bool": { 
           "should": [ 
            {"term": {"field2": "d"}}, 
            {"term": {"state": "e"}} 
           ] 
          } 
         }, //........ 
        ] 
       } 
      } 

我需要弄清楚如何動態下一生成此查詢。

0

一個更簡單的方法是使用terms query代替:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "terms": { 
      "field1": [ "a", "b", "c" ] 
      } 
     }, 
     { 
      "terms": { 
      "field2": [ "d", "e", "f" ] 
      } 
     }, 
     { 
      "terms": { 
      "field3": [ "g", "h", "i" ] 
      } 
     } 
     ] 
    } 
    } 
} 

正如你可以從官方文檔閱讀,一個terms查詢提供了一個簡單的語法,而不是幾個term一個bool/should查詢中。