2017-10-12 3 views

Antwort

0

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

Verwandte Themen