Brève introduction
Nous savons qu’ES prend en charge une grande variété de types de données, en plus de nos types de données de base courants, il prend aussi en charge des types de données qui enregistrent les informations de localisation. Dans ES, il existe deux types de données qui enregistrent les informations de géolocalisation, à savoir geo_shap et geo_point, et je vais brièvement présenter geo_point types ci-dessous geo_point prend en charge plusieurs méthodes de transfert de données :
Corde Position : lat + « », + lon
Tableau Position : {"lat » : ...,"lon » : ...}
Objet Lieu : [lon, lat]
Note : Probablement que tout le monde a déjà marché sur cette fosse au moins une fois == Les points de coordonnées géographiques sont la latitude en premier et la longitude en dernier (« latitude, longitude ») lorsqu’ils sont exprimés en chaînes de caractères, tandis que les tableaux sont représentés sous la forme opposée, avec la longitude en premier et la latitude en dernier ([longitude, latitude]). En fait, dans Elasticesearch, que ce soit sous forme de corde ou d’array, la latitude passe en premier et la longitude en dernier. Cependant, au début, afin de s’adapter à la spécification de formatage de GeoJSON, la représentation des formes de tableau a été ajustée. Cela est expliqué sur le site officiel. Il existe généralement les exigences suivantes pour les types de geo_point
Requête sur la distance Trouver des points à distance du point central
Requête sur la distance (obsolète) Les points d’interrogation dans la plage spécifiée du point central sont supprimés de l’API dans la nouvelle version d’ES, donc je ne vais pas trop l’expliquer ici
Requête englobante Trouver des points à l’intérieur d’un rectangle constitué d’un point spécifié
Requête polygonale Trouver des points dans un polygone composé de plusieurs points
L’usine SearchSourceBuilder conçue pour différentes requêtes en Java est la suivante :
Service comme suit :
Le code de la couche contrôleur est le suivant :
[1]. Comment utiliser
Avant d’utiliser geo_point types, nous devons d’abord spécifier explicitement le champ comme le type de geo_point via une correspondance lors de la création de l’index, comme suit :
Ci-dessus, nous avons créé un nouvel index nommé restraunt, et dans son fichier de mappage, nous spécifions explicitement le type de champ « location » comme « geo_point »
[2] Préparez des données
Sur Kibana, nous avons préparé les données suivantes :
Nous avons préparé 7 données ci-dessus, puis nous devons exécuter la requête pour voir si notre interface répond à nos besoins.
[3] Enquête
Distance de requête
Les deux autres questions sont les mêmes que ci-dessus.
|