2015-04-22 4 views
4

Каков наилучший способ указать sort order in ElasticSearch для нескольких полей? Формат строки запроса, кажется, не работает вообще:Порядок сортировки ElasticSearch для нескольких полей

http://elasticsearch_url/index/_search?sort=field1:asc&sort=field2:desc&size=100 

Хотелось бы разобраться сначала field1, затем field2, но только одна из областей, кажется, отсортирован правильно. Полные нотации работают лучше, но первые записи имеют иногда неправильный порядок поиска:

curl -s -XGET http://elasticsearch_url/index/_search -d ' 
{ 
    "sort": [ 
     { "field1": { "order": "desc" }}, 
     { "field2": { "order": "desc" }} 
    ], 
    "size": 100 
}' 
+2

Вы не можете отсортировать несколько полей, используя первую строку запроса, которую вы использовали, поскольку учитывается только один вид поля. Если вы хотите применить сортировку по нескольким полям, вам нужно будет использовать полное описание описания нотации – eliasah

ответ

2

Видимо второе, полное обозначение работает лучше.

Другая проблема заключалась в том, что одно из полей содержало URL-адреса, которые ElasticSearch анализировали нечетными способами. Даже нормальный string fields может быть трудно отсортировать, indexing a url in ElasticSearch еще сложнее.

Смежные вопросы