2015-06-19 41 views
0

這是我的索引如何檢查elasticsearch中是否存在數組字段的特定元素?

{ 
    "name": "sandy", 
    "age": "25", 
    "ug":["B.tech"], 
    "pg":["MS","Phd"] 
} 

我想PG資格的基礎上,篩選候選人的樣本文件。我想要兩種類型的過濾器。

  1. 在某些情況下,PG字段將爲空。所以,我只需要篩選出具有PG資格的人。

  2. 我希望具有PG資格「MS」的候選人。但不是像「MBA」和其他人。這將作爲「pg」數組下的第一個元素給出。 我該如何在Elasticsearch中實現?

+0

我不明白「pg數組下的第一個元素」場景。你能否舉出當「MBA」出現時不應該匹配的文件的例子?你的意思是一個「pg」字段值爲「[」MS「,」MBA「]的文件不應該匹配嗎? – bittusarkar

回答

0

考慮到提供的信息,我可以建議如下。

  1. 對於第一個問題,嘗試使用存在對含在陣列中ATLEAST一個PG值濾波記錄濾波器

    { 「查詢」:{ 「constant_score」:{ 「存在」:{ 「場」: 「PG」 } } } }

  2. 關於第二個問題,考慮下面顯示了結果可以在數組中包含其他元素以及MS的事實。

    { 「查詢」:{ 「布爾」:{ 「必須」:[ { 「術語」:{ 「additionalSkill」: 「Java」 的 } }, { 「constant_score」 :{ 「過濾器」:{ 「存在」:{ 「字段」: 「additionalSkill」 } } } } ] } } }

  3. 如果您的用例dint允許數組中的其他元素以外的MS,那麼您可能必須通過在elasticsearch中使用腳本功能來限制結果記錄。

相關問題