Ich habe das folgende Feld in meinem IndexSortierung auf Aggregat Wert in einem bestimmten Bereich in Elasticsearch
field1:{key:value}
Ist es möglich, meine Abfrage Summe von Werten in Feld1 zu sortieren. Dank
Ich habe das folgende Feld in meinem IndexSortierung auf Aggregat Wert in einem bestimmten Bereich in Elasticsearch
field1:{key:value}
Ist es möglich, meine Abfrage Summe von Werten in Feld1 zu sortieren. Dank
Hier ist eine Möglichkeit, die Sie tun könnten, vorausgesetzt, Sie kennen die Felder im Voraus. Es sollte mit einigen kleineren Verfeinerungen möglich sein, wenn Sie die Felder mit einem Platzhalter versehen müssen. Dies setzt voraus, dass die gleichgeordneten Felder im verschachtelten Typ numerisch sind.
Beispiel Mapping:
"test": {
"mappings": {
"type1": {
"properties": {
"field1": {
"properties": {
"key1": {
"type": "integer"
},
"key2": {
"type": "integer"
}
}
}
}
}
}
}
Standardergebnisse:
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "test",
"_type": "type1",
"_id": "AV8O7956gIcGI2d5A_5g",
"_score": 1,
"_source": {
"field1": {
"key1": 11,
"key2": 17
}
}
},
{
"_index": "test",
"_type": "type1",
"_id": "AV8O78FqgIcGI2d5A_5f",
"_score": 1,
"_source": {
"field1": {
"key1": 5,
"key2": 6
}
}
}
]
}
Abfrage mit Skript:
GET /test/_search
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"script_score": {
"script": "return (doc['field1.key1'].value + doc['field1.key2'].value) * -1"
}
}
]
}
}
}
Logic die niedrigste Punktzahl als die beste Punktzahl (am wenigsten negativ in diesem Fall unter):
{
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": -11,
"hits": [
{
"_index": "test",
"_type": "type1",
"_id": "AV8O78FqgIcGI2d5A_5f",
"_score": -11,
"_source": {
"field1": {
"key1": 5,
"key2": 6
}
}
},
{
"_index": "test",
"_type": "type1",
"_id": "AV8O7956gIcGI2d5A_5g",
"_score": -28,
"_source": {
"field1": {
"key1": 11,
"key2": 17
}
}
}
]
}
}
Hoffentlich gibt Ihnen das den Kern von welcher spezifischen Bewertungslogik Sie benötigen