Comment puis-je trier dans elasticsearch?

Comment puis-je trier dans elasticsearch?
Vous pouvez trier les résultats ElasticSearch en utilisant le mot clé de tri. La requête de tri vous oblige à fournir un champ sous lequel trier. Elasticsearch ne prend pas en charge le tri sur les champs de texte de type.

Dans ce court guide, nous examinerons comment trier les résultats de la requête dans Elasticsearch.

Utilisation de base

Vous pouvez trier les résultats en utilisant une méthode de ligne dans une requête. Par exemple:

Get / kibana_sample_data_flights / _search?q= DestcityName: Denver & Sort = AvgticketPrice

Dans l'exemple de requête ci-dessus, nous récupérons tous les documents où le champ de destcityName est égal à Denver, puis trie les résultats sur le prix Avgticket.

La requête résultante devrait inclure les documents où la ville est Denver, les prix des billets triés par commande ascendante.

L'exemple de sortie est comme indiqué:

Bien que la méthode en une ligne puisse être utile lorsque vous devez effectuer un tri rapide, il n'est pas très lisible et peut être compliqué lorsque vous devez trier plusieurs champs.

Pour résoudre ce problème, vous pouvez utiliser la méthode de requête Elasticsearch recommandée. Par exemple, nous pouvons écrire la requête ci-dessus comme:

Get / kibana_sample_data_flights / _search

"mettre en doute":
"correspondre":
"DestcityName": "Denver"


, "trier": [

"Avgticketprice":
"Ordre": "ASC"


]]

Cette requête fonctionne de manière similaire à la méthode en ligne indiquée ci-dessus. Cependant, il est plus descriptif et est plus lisible.

Trier par commande ascendante

Pour changer par ordre inverse, vous pouvez modifier l'ordre de l'ASC à DESC, ce qui triera les valeurs du plus haut au plus bas comme indiqué:

Get / kibana_sample_data_flights / _search

"mettre en doute":
"correspondre":
"DestcityName": "Denver"


, "trier": [

"Avgticketprice":
"Ordre": "Desc"


]]

L'exemple de sortie est comme indiqué:

Tri de distance géo

Elasticsearch vous permet de trier par géo-information en utilisant le paramètre _GEO_DISTANCE. Par exemple, considérez la requête suivante:

Get / kibana_sample_data_flights / _search

"mettre en doute":
"correspondre":
"Destcountry": "nous"

,
"trier": [

"_Geo_Distance":
"Originlocation":
"Lat": 30,
"Lon": -103
,
"Ordre": "Desc"


]]

La requête ci-dessus doit renvoyer les enregistrements où le pays de destination est égal aux États-Unis et l'emplacement est dans la plage de latitude et de longitude spécifiée.

Trier par type de texte

Le tri ne se limite pas aux valeurs numériques, vous triez par texte comme:

Get / kibana_sample_data_flights / _search

"mettre en doute":
"correspondre":
"DestcityName": "Sydney"

,
"trier": [

"Transporteur":
"Ordre": "Desc"


]]

Conclusion

Dans ce tutoriel, nous avons couvert comment trier les résultats d'une requête Elasticsearch en utilisant le mot clé de tri. Vérifiez la documentation pour en savoir plus.