2016-04-08 5 views
1

sortieren Ich möchte elasticsearch als Suchmaschine verwenden. Ich kopiert Datensätze aus MySQL Elasticsearch und wenn ich Elasticsearch Abfrage ich möchte einen Wert mit den Daten in elastischer berechnen und es verwenden, um die ErgebnisseWie kann ich nach einem berechneten Wert in elasticsearch

Mein Index zu sortieren wie folgt aussieht:

{ 
    "busquedas" : { 
     "aliases" : { }, 
     "mappings" : { 
     "coche" : { 
      "properties" : { 
      "coeff_e" : { 
       "type" : "double" 
      }, 
      "coeff_r" : { 
       "type" : "double" 
      }, 
      "desc" : { 
       "type" : "string" 
      } 
      } 
     } 
     }, 
     "settings" : { 
     "index" : { 
      "creation_date" : "1460116924258", 
      "number_of_shards" : "5", 
      "number_of_replicas" : "1", 
      "uuid" : "N6jhy_ilQmSb6og16suZ4g", 
      "version" : { 
      "created" : "2030199" 
      } 
     } 
     }, 
     "warmers" : { } 
    } 

}

und ich möchte einen Wert pro Datensatz berechnen wie

myCustomOrder = (coeff_e + coeff_r) * timestamp 

und es verwenden, Ergebnisse zu sortieren

{ 
    "sort" : [ 
     { "myCustomOrder" : {"order" : "asc"}}, 
     "_score" 
    ], 
    "query" : { 
     "term" : { ... } 
    } 
} 

ich weiß, ich groovy kann Werte zu berechnen, aber ich konnte es nur wie sein in den Beispielen gezeigt zu filtern verwenden

{ 
    "from": 10, 
    "size": 3, 
    "filter": { 
    "script": { 
     "script": "doc['coeff_e'].value < 0.5" 
    } 
    } 
} 

Vielen Dank im Voraus, ich total Neuling bin Elasticsearch: D

+0

check this out >> http://stackoverflow.com/questions/36019873/elastic-search-aggregation-with-range-query – Arun

Antwort

1

Das gleiche wie bei der Filterung. Werfen Sie einen Blick auf diese section of the documentation. Es sollte selbsterklärend sein, wenn Sie bereits Skripte kennen :-).

Für die Vollständigkeit halber:

{ 
    "query" : { 
     .... 
    }, 
    "sort" : { 
     "_script" : { 
      "type" : "number", 
      "script" : { 
       "inline": "doc['field_name'].value * factor", 
       "params" : { 
        "factor" : 1.1 
       } 
      }, 
      "order" : "asc" 
     } 
    } 
} 
Verwandte Themen