existiert ich ES 2.3 verwenden und eine Abfrage hat, in der filter
Abschnitt sieht wie folgt aus:Elasticsearch: ein Filter auf verschachteltes Dokument ausführt nur, wenn es
"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
}
]
}
}
}
}
Ich habe einen Filter, wo ich einige Bedingungen Check-in das verschachtelte Dokument "Mitarbeiter" in einem größeren Dokument namens Firma, aber ich möchte diesen Filter nur ausführen, wenn das Objekt "Mitarbeiter" existiert, da einige Dokumente dieses verschachtelte Dokument überhaupt nicht haben. Also fügte ich hinzu: {"exists": {"field": "employees"}}
aber das scheint nicht zu funktionieren. Irgendeine Idee, welche Änderung ich machen sollte, damit es funktioniert?
Sie benötigen die 'exists' Abfrage innerhalb der' nested' Abfrage zu bewegen und es wird funktionieren – Val
@val können Sie mir bitte zeigen, wo sollte ich es genau setzen? – JVK
Auch wenn Sie es in "geschachtelt" setzen, dann nehmen Sie bereits an, dass verschachtelt bereits existiert, dann wird es nur durchlaufen? – JVK