我使用ES 2.3和有一個查詢中filter
部分看起來如下:Elasticsearch:對嵌套文件執行過濾器,只有當它存在
"filter": {
"query": {
"bool": {
"must": [
{
"nested": {
"path": "employees",
"query": {
"bool": {
"must": [
{
"range": {
"employees.max_age": {
"lte": 50
}
}
},
{
"range": {
"employees.min_age": {
"gte": 20
}
}
}
]
}
}
}
},
{
"exists": {
"field": "employees"
}
},
{
#....other filter here based on root document, not on nested employee document
}
]
}
}
}
}
我有一個過濾器,在這裏我檢查在某些條件下嵌套的文檔「僱員」在一個更大的文檔中稱爲company,但是我想運行這個過濾器,只有當「employees」對象存在時,因爲某些文檔可能根本沒有嵌套文檔。所以我補充說,{"exists": {"field": "employees"}}
但這似乎並不奏效。任何想法我應該做些什麼改變才能奏效?
你需要移動'nested'查詢裏面的'exists'查詢,也將努力 – Val
@val可以請你告訴我在哪裏,我應該正好把它? – JVK
另外,如果你把它放在'nested'裏面,那麼你已經假設嵌套已經存在,那麼只有它會遍歷? – JVK