Ma cartographie est:ElasticSearch 2.4 EXISTE filtre pour les objets imbriqués qui ne travaillent pas
"properties": {
"user": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean",
"null_value": false
},
"username": {
"type": "string"
}
}
},
Je veux obtenir tous les documents qui ne sont pas un champ user
.
J'ai essayé:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
qui retourne tous les documents. Sur la base de ElasticSearch 2.x exists filter for nested field doesn't work, j'ai essayé aussi:
GET /index/type/_search
{
"query": {
"nested": {
"path": "user",
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
}
}
qui retourne 0 documents.
Quelle est la requête correcte pour obtenir tous les documents manquant le champ user
?
Pouvez-vous essayer de tester l'existence du ' user.id' field à la place? Si le document parent n'a pas de champ 'user', alors il n'aura pas de champ' user.id'. – Val
Je suppose que cela fonctionnerait assez bien, mais il manquera un cas de bord où l'utilisateur est défini mais vide. – pmishev