Ich benutze die Bool-Abfrage für die "müssen" und "muss nicht" -Funktion. Es funktioniert wie erwartet, bis ich zu einer Eigenschaft komme, die 3 Ebenen tief ist. zum Beispiel eine einfache Abfrage Spiel wie ...ElasticSearch | Bool Query
GET city/town/_search
{
"query": {
"match": {
"contact.residence.address": "Rocky Road"
}
}
}
funktioniert gut und die Ergebnisse zurückgibt, aber wenn ich das gleiche in einer Bool Abfrage tun wie ..
GET city/town/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"contact.residence.address": "Rocky Road"
}
}
]
}
}
}
Rückkehr keine Ergebnisse. Warum ist das????? Denken Sie daran, andere bool Abfragen wie ..
GET city/town/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"store.name": "Hendersons"
}
}
]
}
}
}
funktionieren gut! Es ist nur für jedes Feld, das 3 Ebenen tief ist, und sucht daher jeden Begriff, der prop1.prop3.prop3 ist
Sie haben vielleicht verwenden 'contact.residence.address' Feld zugeordnet mit 'text' Typ. Wenn dies der Fall ist, dann funktioniert das Ersetzen von 'term' mit' match' in Ihrer zweiten Abfrage wie erwartet. Ich würde vorschlagen, dass Sie den Abschnitt lesen Warum stimmt der Begriff Abfrage nicht mit meinem Dokument überein? in offiziellen Dokumenten [hier] (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html#query-dsl-term-query). – avr