Ich verwende Elasticsearch 5.5.0.Wie Abfrage Array von Objekten als Teil der Begriff Abfrage
Im meinem Index Ich habe Daten vom Typ Attraktion Teil des json in elastischen sehen aus wie:
"directions": "Exit the M4 at Junction 1",
"phoneNumber": "03333212001",
"website": "https://www.londoneye.com/",
"postCode": "SE1 7PB",
"categories": [
{
"id": "ce4cf4d0-6ddd-49fd-a8fe-3cbf7be9b61d",
"name": "Theater"
},
{
"id": "5fa1a3ce-fd5f-450f-92b7-2be6e3d0df90",
"name": "Family"
},
{
"id": "ed492986-b8a7-43c3-be3d-b17c4055bfa0",
"name": "Outdoors"
}
],
"genres": [],
"featuredImage": "https://www.daysoutguide.co.uk/media/1234/london-eye.jpg",
"images": [],
"region": "London",
Meine nächste Abfrage wie folgt aussieht:
var query2 = Query<Attraction>.Bool(
bq => bq.Filter(
fq => fq.Terms(t => t.Field(f => f.Region).Terms(request.Region.ToLower())),
fq => fq.Terms(t => t.Field(f => f.Categories).Terms(request.Category.ToLower())))
Die Abfrage sieht erzeugt wie:
{
"query": {
"bool": {
"filter": [
{
"terms": {
"region": [
"london"
]
}
},
{
"terms": {
"categories": [
"family"
]
}
}
]
}
}
}
Das gibt keine Ergebnisse zurück. Wenn ich die Kategorien herausbreche, bekomme ich Ergebnisse. Also versuche ich, einen Termfilter auf Kategorien anzuwenden, der ein Array von Objekten ist. Sieht so aus, als würde ich diese Anfrage falsch machen. Irgendwelche Hinweise, wie man das zur Arbeit bringt?
Grüße
Ismail
Ich denke, Sie möchten den vollständigen Pfad des Feldes angeben: 'categories.name'. Das sollte funktionieren. – Slomo
Sie sollten eine verschachtelte Abfrage verwenden, Sie finden die Verwendung in [docs] (https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/nested-query-usage.html) . – Rob
rob, nicht sicher, wie du das mit dem Nest Client machst? Ich weiß, wie man mit DSL macht – Ismail