2016-04-08 4 views
1

Я хочу использовать elasticsearch как поисковую систему. Я копирую записи из MySQL в elasticsearch и когда я запрашиваю elasticsearch я хочу, чтобы вычислить значение с данными в упругом и использовать его для сортировки результатовКак сортировать по расчетному значению в elasticsearch

Моего индекс выглядит следующим образом:

{ 
    "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" : { } 
    } 

}

И я хочу, чтобы вычислить значение для каждой записи, как

myCustomOrder = (coeff_e + coeff_r) * timestamp 

И использовать его для сортировки результатов

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

Я знаю, что я могу использовать заводной для вычисления значений, но я только мог использовать его для фильтрации, как его показано в примерах

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

Спасибо заранее, я полностью новичок в elasticsearch: D

+0

проверить это >> http://stackoverflow.com/questions/36019873/elastic-search-aggregation-with-range-query – Arun

ответ

1

То же, что и при фильтрации. Взгляните на это section of the documentation. Он должен быть понятным, если вы уже знаете о скриптах :-).

Для полноты ради:

{ 
    "query" : { 
     .... 
    }, 
    "sort" : { 
     "_script" : { 
      "type" : "number", 
      "script" : { 
       "inline": "doc['field_name'].value * factor", 
       "params" : { 
        "factor" : 1.1 
       } 
      }, 
      "order" : "asc" 
     } 
    } 
} 
Смежные вопросы