Hvordan sorterer jeg i Elasticsearch?

Hvordan sorterer jeg i Elasticsearch?
Du kan sortere elasticsearch -resultater ved hjelp av sorteringsnøkkelordet. Sorter -spørringen krever at du gir et felt som du skal sortere. Elasticsearch støtter ikke sortering på tekstfelt.

I denne korte guiden vil vi se på hvordan du sorterer spørresultater i Elasticsearch.

Grunnleggende bruk

Du kan sortere resultatene ved hjelp av en linjemetode i en spørring. For eksempel:

Få /kibana_sample_data_flights /_search?q= DestCityName: Denver & Sort = AvgticketPrice

I eksemplet på spørringen ovenfor henter vi alle dokumentene der feltet DestCityName er lik Denver og sorterer deretter resultatene på AVGTICKET -prisen.

Den resulterende spørringen skal inneholde dokumentene der byen er Denver, med billettprisene sortert i stigende rekkefølge.

Eksempelutgang er som vist:

Selv om en-linje-metoden kan være nyttig når du trenger å utføre en rask sortering, er den ikke veldig lesbar og kan bli komplisert når du trenger å sortere flere felt.

For å løse dette, kan du bruke den anbefalte Elasticsearch -spørringsmetoden. Vi kan for eksempel skrive spørringen ovenfor som:

Få /kibana_sample_data_flights /_search

"spørring":
"kamp":
"DestcityName": "Denver"


, "Sorter": [

"AvgticketPrice":
"Order": "ASC"


]

Denne spørringen fungerer på samme måte som en-linje-metoden vist ovenfor. Imidlertid er det mer beskrivende og er mer lesbar.

Sorter etter stigende orden

For å endre ved omvendt rekkefølge, kan du endre rekkefølgen fra ASC til Desc, som vil sortere verdiene fra de høyeste til de laveste som vist:

Få /kibana_sample_data_flights /_search

"spørring":
"kamp":
"DestcityName": "Denver"


, "Sorter": [

"AvgticketPrice":
"Order": "Desc"


]

Eksempelutgangen er som vist:

Geo avstandssortering

Elasticsearch lar deg sortere etter geo-informasjon ved hjelp av _geo_distance-parameteren. Tenk for eksempel følgende spørsmål:

Få /kibana_sample_data_flights /_search

"spørring":
"kamp":
"Destcountry": "oss"

,
"Sorter": [

"_geo_distance":
"OriginLocation":
"Lat": 30,
"Lon": -103
,
"Order": "Desc"


]

Ovennevnte spørring skal returnere postene der destinasjonslandet er lik USA og stedet er innenfor det spesifiserte breddegrad og lengdegradsområde.

Sorter etter teksttype

Sortering er ikke begrenset til numeriske verdier, du sorterer etter tekst som:

Få /kibana_sample_data_flights /_search

"spørring":
"kamp":
"DestcityName": "Sydney"

,
"Sorter": [

"Carrier":
"Order": "Desc"


]

Konklusjon

I denne opplæringen dekket vi hvordan du sorterer resultater fra en Elasticsearch -spørring ved hjelp av sorteringsnøkkelordet. Sjekk dokumentasjonen for å lære mer.