0
我有一種情況,其中包含整數數組的字段。我需要能夠實現一個查詢,該查詢過濾掉包含的文檔,只有這個數組中的一組值。ElasticSearch:篩選數組字段中的任何值不在列表中的文檔
例如,假設我創建了以下指標:
PUT /test/stuff/1
{
"foo": [1,2,3]
}
PUT /test/stuff/2
{
"foo": [2]
}
PUT /test/stuff/3
{
"foo": [1,3]
}
現在我想獲得的所有文件,其中「富」包含不在[2,4]的任何值。我想要返回帶有ID 1和3的文檔。並非文檔1包含值2
,但也包含其他值。一個簡單的must_not
這樣會過濾掉一些文件1:
POST /test/stuff/_search
{
"query": {
"bool": {
"must" : {
"match_all": {}
},
"filter" : {
"bool": {
"must_not": [
{
"terms" : {"foo" : [2,4]}
}
]
}
}
}
}
}
上面的查詢將只匹配文件3.有沒有辦法改寫這也包括文檔1?
所以,你要對結果[2,4]類似於「或」 - 搜索(析取)與所有其他字段'foo'的值? –
我希望結果包含foo包含任何不是2或4的值的文檔。2或4也可以存在,但至少有一個其他值必須存在。 – Alex