2017-07-10 1 views
0

Ich habe eine Beispieldaten ähnlich wie in Elasticsearch 5.5 gespeichert. Ich kann Index, Suche basierend auf match_all, gte usw. mit Postman erstellen.Elasticsearch: Sortierung basierend auf Bewertung

{ 
    "name":"Apple", 
    "address": { 
    "city":"Cupertino", 
    "state":"CA", 
    "country":"USA" 
    }, 
    "rating":"4.9" 
} 

Ich brauche alle Einheiten auf Bewertung zu sortieren, so verwende ich unter

{ 
    "query":{ 
    "match_all":{} 
    }, 
    "sort" : [ 
     { 
     "rating" : { 
      "order" : "desc" 
     } 
     } 
    ] 
} 

Aber ich unten Fehler sehen in Postbote

"type": "illegal_argument_exception", 
     "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [rating] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." 

Jeder Vorschlag?

Antwort

2

Es scheint, dass Sie das Bewertungsfeld in numerisch ändern müssen, um die Sortierung für dieses Feld durchzuführen.

{ 
    "name":"Apple", 
    "address": { 
    "city":"Cupertino", 
    "state":"CA", 
    "country":"USA" 
    }, 
    "rating":4.9 
} 

sonst können Sie fielddata auf einem vorhandenen Textfeld mit der PUT-Mapping-API aktivieren wie folgt:

PUT my_index/_mapping/my_type 
{ 
    "properties": { 
    "rating": { 
     "type":  "text", 
     "fielddata": true 
    } 
    } 
} 
Verwandte Themen