0
我試圖運行對elasticsearch一個查詢,就會發現文件凡符合下列條件之一適用:排除空數組領域 - 但包括文檔丟失的領域 - 在elasticsearch
- 文件缺少給定場(
tags
)OR - 的文檔具有價值
foo
作爲tags
數組的元素
的問題是,我當前的查詢將返回有一個的文件其中值爲空數組的字段。據推測,這是因爲elasticsearch將空陣列視爲與沒有該字段相同的事物。以下是我正在運行的是返回不好的結果全查詢:
{
"from": 0,
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "_rankings.public"
}
},
{
"or": [
{
"missing": {
"existence": true,
"field": "tags",
"null_value": false
}
},
{
"terms": {
"execution": "or",
"tags": [
"foo"
]
}
}
]
}
]
}
},
"query": {
"match_all": {}
}
}
},
"size": 10000,
"sort": [
{
"_rankings.public": {
"ignore_unmapped": true,
"order": "asc"
}
}
]
}
爲什麼不設置'null_value:false'會排除所有包含空值的空值的文檔?它似乎應該來自缺少的過濾器文檔:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-missing-filter.html – ysimonson 2014-10-01 21:22:25
「null_value」屬性的「缺少」過濾器是告訴ES考慮爲字段設置的「null_value」字段(通過映射)被視爲缺失字段。在我給出的例子中,如果你把'「標籤」:[「_your_null_value_of_choice _」]並設置爲''null_value「:true'將認爲該文檔中有一個空值的數組。如果你把''null_value':false',這個文件將不被考慮,因爲ES不知道你放在那裏的值是否爲null。因此,「null_value」屬性不用於您認爲應該使用的屬性,它與爲字段設置的「null_value」關聯。 – 2014-10-02 11:03:37