Jak sortować w ElasticSearch?

Jak sortować w ElasticSearch?
Możesz sortować wyniki elasticsearch za pomocą słowa kluczowego sortowania. Zapytanie o sort. ElasticSearch nie obsługuje sortowania na polach tekstu typu.

W tym krótkim przewodniku przyjrzymy się, jak sortować wyniki zapytania w elasticsearch.

Podstawowe użycie

Możesz sortować wyniki za pomocą metody jednej linii w zapytaniu. Na przykład:

Get /kibana_sample_data_flights /_search?Q= DestCityName: denver & sort = avgticketprice

W powyższym przykładzie zapytaniu pobieramy wszystkie dokumenty, w których pola destCityName jest równa Denverowi, a następnie sortuje wyniki ceny AVGTicket.

Powstałe zapytanie powinno zawierać dokumenty, w których miasto jest Denver, z ceną biletów posortowanymi w kolejności rosnącej.

Przykładowe dane wyjściowe to jak pokazano:

Chociaż metoda jednowierszowa może być pomocna, gdy trzeba wykonać szybki sort, nie jest ona bardzo czytelna i może się skomplikować, gdy trzeba sortować wiele pól.

Aby to rozwiązać, możesz użyć zalecanej metody zapytań elasticsearch. Na przykład możemy napisać powyższe zapytanie jako:

Get /kibana_sample_data_flights /_search

"zapytanie":
"mecz":
„DestCityName”: „Denver”


, „Sort”: [

„AvgticketPrice”:
„Zamów”: „ASC”


]

To zapytanie działa podobnie do metody jednowierszowej pokazanej powyżej. Jest jednak bardziej opisowy i jest bardziej czytelny.

Sortuj według zamówienia rosnącego

Aby zmienić kolejność odwrotną, możesz zmienić kolejność z ASC na DESC, co sortuje wartości od najwyższych na najniższe, jak pokazano:

Get /kibana_sample_data_flights /_search

"zapytanie":
"mecz":
„DestCityName”: „Denver”


, „Sort”: [

„AvgticketPrice”:
„Zamów”: „DESC”


]

Przykładowe dane wyjściowe jest takie, jak pokazano:

Sortowanie odległości Geo

ElasticSearch umożliwia sortowanie według geoinformacji za pomocą parametru _GEO_Distance. Rozważmy na przykład następujące zapytanie:

Get /kibana_sample_data_flights /_search

"zapytanie":
"mecz":
„DestCountry”: „Us”

,
„Sort”: [

„_Geo_Distance”:
„OriginLocation”:
„Lat”: 30,
„Lon”: -103
,
„Zamów”: „DESC”


]

Powyższe zapytanie powinno zwrócić zapisy, w których kraj docelowy jest równy USA, a lokalizacja znajduje się w określonym zakresie szerokości i długości geograficznej.

Sortuj według typu tekstu

Sortowanie nie ogranicza się do wartości numerycznych, sortuj tekst jako:

Get /kibana_sample_data_flights /_search

"zapytanie":
"mecz":
„DestCityName”: „Sydney”

,
„Sort”: [

"Przewoźnik":
„Zamów”: „DESC”


]

Wniosek

W tym samouczku omówiliśmy, jak sortować wyniki z zapytania ElasticSearch za pomocą słowa kluczowego sortowania. Sprawdź dokumentację, aby dowiedzieć się więcej.