2016-08-22 3 views
1

Я пытаюсь сортировать результаты поиска по расстоянию. Однако, когда я пытаюсь я получаю следующее сообщение об ошибке:Ошибка ES при сортировке по расстоянию

{ 
    "error": { 
     "root_cause": [ 
     { 
      "type": "illegal_argument_exception", 
      "reason": "sort option [location] not supported" 
     } 
     ], 
     "type": "search_phase_execution_exception", 
     "reason": "all shards failed", 
     "phase": "query", 
     "grouped": true, 
     "failed_shards": [ 
     { 
      "shard": 0, 
      "index": "roeselaredev", 
      "node": "2UYlfd7sTd6qlJWgdK2wzQ", 
      "reason": { 
       "type": "illegal_argument_exception", 
       "reason": "sort option [location] not supported" 
      } 
     } 
     ] 
    }, 
    "status": 400 
} 

Запрос я послал выглядит так:

GET _search 
{ 
    "query": { 
     "match_all": [] 
    }, 
    "sort": [ 

     { 
      "geo_distance": { 
       "location": { 
        "lat": 50.9436034, 
        "long": 3.1242917 
       }, 
       "order":"asc", 
       "unit":"km", 
       "distance_type":"plane" 
      } 
     }, 
     { 
      "_score": { 
       "order":"desc" 
      }   
     } 
    ] 
} 

Насколько я могу сказать, я следовал инструкциям в документации к письму. Я не получаю неверный результат запроса. Я просто получаю не поддерживаемый результат для опции сортировки по расстоянию. Любые идеи относительно того, что я делаю неправильно?

+0

Как отображается 'geo_distance'? – Sylwit

+0

geo_distance - это имя фильтра, оно не отображается. : местоположение отображается так: 'location: {type: geo_point, property_path: esGetLocation}' Метод esGetLocation просто возвращает строку, содержащую lat и long join (разделен запятой) –

ответ

1

Запрос dsl недействителен, когда OP почти корректен :), но отсутствует под-оценка.

При сортировке по расстоянию это _geo_distance, а не geo_distance.

Пример:

GET _search 
{ 
    "query": { 
     "match_all": [] 
    }, 
    "sort": [ 

     { 
      "_geo_distance": { 
       "location": { 
        "lat": 50.9436034, 
        "long": 3.1242917 
       }, 
       "order":"asc", 
       "unit":"km", 
       "distance_type":"plane" 
      } 
     }, 
     { 
      "_score": { 
       "order":"desc" 
      }   
     } 
    ] 
} 
+0

gah: p Очень важно! –

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