Ich möchte eine bestimmte Art auf eine Abfrage anwenden, sollte es zuerst meine Dokumente durch einen einzigen Wert sortieren dann alle anderen. Ich muss etwas wie das ORDER BY CASE WHEN in MySQL erreichen, aber ich konnte nicht finden, wie man es macht.Elasticsearch Reihenfolge von einem bestimmten Feld Wert zuerst
Jedes Element im Index in Elastic hat die folgende Struktur:
{
"id": 123,
"name": "Title",
"categories": ["A", "B", "C"],
"price": 100,
"city": "London",
"country": "United Kingdom",
"status": 1
}
ich die folgende Abfrage:
{
"fields": [],
"sort": [{"price": {"order": "asc"}}],
"size": 0,
"query": {
"query_string": {
"query": "status:1 AND country:'United Kingdom'"
}
},
"aggs": {
"id": {
"terms": {
"field": "id",
"size": 10
}
}
}
}
So durch die Spalte city
mit dem Wert "Liverpool" erste Sortierung und unter Berücksichtigung das folgende Beispiel:
{"id": 1, "name": "Test", "categories": ["A", "B", "C"], "price": 100, "city": "London", "country": "United Kingdom", "status": 1 }
{"id": 2, "name": "Sample", "categories": ["A", "D", "F"], "price": 200, "city": "Manchester", "country": "United Kingdom", "status": 1 }
{"id": 3, "name": "Title", "categories": ["X", "Y", "Z"], "price": 1000, "city": "Liverpool", "country": "United Kingdom", "status": 1 }
Ich erwarte, als outpu zu haben t die folgende ID: 3, 1, 2.
Wie kann ich meine Abfrage ändern, um dieses Verhalten zu erhalten?
UPDATE: Die Version ist 1.7.2
Was wäre der ORDER BY CASE WHEN in Ihrem Fall? – Val
Haben Sie endlich eine Lösung für Ihren Fall gefunden? –