Моего отображения:Elasticsearch 2,4, Exists фильтра для вложенных объектов не работает
"properties": {
"user": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean",
"null_value": false
},
"username": {
"type": "string"
}
}
},
Я хочу, чтобы все документы, которые не имеют user
поля.
Я пробовал:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
который возвращает все документы. основе ElasticSearch 2.x exists filter for nested field doesn't work, я также пытался:
GET /index/type/_search
{
"query": {
"nested": {
"path": "user",
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
}
}
который возвращает 0 документов.
Каков правильный запрос, чтобы получить все документы без поля user
?
Вы можете попытаться проверить существование ' user.id' вместо этого? Если родительский документ не имеет поля 'user', то он также не будет содержать поля' user.id'. – Val
Я предполагаю, что это будет работать достаточно хорошо, но это пропустит край, где пользователь установлен, но пуст. – pmishev