Ich bin mit dem folgenden Problem konfrontiert. Ich habe einige sortierte Abfragen für eine bestimmte Gruppe von Datensätzen in meinem Index, ähnlich der folgenden, wobei die term1
übereinstimmenden Werte pro Abfrage variieren, während sie für term2
für alle Abfragen statisch bleiben.Elasticsearch Gruppe sortierte kombinierte Abfrage
{
"query": {
"bool": {
"must": {
"terms": {
"term1": [ "val1", "val2" ]
}
},
"must_not": {
"terms": {
"term2": [ "val3", "val4" ]
}
}
}
},
"sort": [
{ "sort_term": "desc" }
],
"from": 0,
"size": 10
}
Gerade jetzt, ich bin der Durchführung all diese Abfragen getrennt und dann kombiniert und ihre Ergebnisse in Code schlurfend, etwas, das wie Sie wahrscheinlich nicht ideal sagen kann, ist. Ich habe mich gefragt, ob es eine Möglichkeit gibt, diese Abfragen in ElasticSearch zu kombinieren, während die gruppenbasierte Sortierung beibehalten wird.
Der Grund, warum ich die Sortierreihenfolge jeder einzelnen Abfrage beibehalten möchte, liegt darin, dass die Sortierwerte nicht einheitlich sind und ich nicht möchte, dass Ergebnisse aus verschiedenen Gruppen in der Ergebnismenge vergraben werden. Die einzige Lösung, die mir einfällt, wäre, alle Datensätze irgendwie neu zu verarbeiten und einen relativen Sortierwert basierend auf den Sortierwerten aller Datensätze in einer gegebenen Gruppe zu berechnen, aber diese Werte ändern sich sehr regelmäßig und der Index hat viele Platten, das wäre wahrscheinlich zuviel.
Alle Ideen würden sehr geschätzt werden!
Ich verstehe, dass ich mehrere Sortierausdrücke verwenden kann, aber in diesem Fall verwenden alle meine Abfragen denselben Sortierbegriff. Ich möchte jeden booleschen Ausdruck einzeln sortieren und die Ergebnisse mischen. – OrfeasZ
Dann habe ich deine Frage nicht verstanden, es ist unklar, wie das Endergebnis sortiert werden soll. – MartinSchulze