2015-06-10 128 views
2

我想檢查包含一些值的數組長類型的字段。 我發現的唯一方法是使用腳本:ElasticSearch Scripting: check if array contains a valueelasticsearch -check if array contains a value

,但它仍然沒有工作前我: 查詢:

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "match_all": {} 
      }, 
      "filter": { 
       "script": { 
        "script": "doc['Commodity'].values.contains(param1)", 
        "params": { 
         "param1": 50 
        } 
       } 
      } 
     } 
    } 
} 

,但我得到0命中。而我也有記錄:

{ 
"_index" : "aaa", 
"_type" : "logs", 
"_id" : "2zzlXEOgRtujWiCGtX6s9Q", 
"_score" : 1, 
"_source" : { 

    "Commodity" : [ 
    50 
    ], 
    "Type" : 1, 
    "SourceId" : "fsd", 
     "Id" : 123 
    } 
} 
+0

你爲什麼不使用'{ 「查詢」:{ 「匹配」:{ 「商品」 :50 } } }'? –

+1

我有一個像這樣的過濾器很長的列表。 +我希望能夠過濾多個值,例如:包含50和45的商品 –

回答

4

試試這個,而不是那個腳本:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "terms": { 
      "Commodity": [ 
      55, 
      150 
      ], 
      "execution": "and" 
     } 
     } 
    } 
    } 
} 
+0

好的。謝謝!! –