Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 15452|Antwort: 0

[Quelle] Java-Geolokalisierungsinformationen in ElasticSearch (geo_point)

[Link kopieren]
Veröffentlicht am 09.01.2019 17:25:39 | | |
Kurze Einführung

Wir wissen, dass ES eine große Vielfalt an Datentypen unterstützt; neben unseren üblichen Grunddatentypen unterstützt es auch Datentypen, die Standortinformationen aufzeichnen. Im ES gibt es zwei Arten von Daten, die Geostandortinformationen erfassen, nämlich geo_shap und geo_point, und ich werde im Folgenden kurz geo_point Typen vorstellen.
geo_point unterstützt mehrere Datenübertragungsmethoden:

Schnur
Position: Latte + "", + Lon

Anordnung
Position: {"lat": ...,"lon": ...}

Ziel
Ort: [lon, lat]


Hinweis: Wahrscheinlich ist jeder mindestens einmal in diese Grube getreten == Geographische Koordinatenpunkte sind zuerst Breite und Länge zuletzt ("Breite, Längegrad"), wenn sie als Strings ausgedrückt werden, während Arrays in der entgegengesetzten Form dargestellt werden, mit Längengrad zuerst und Breite zuletzt ([Länge, Breitegrad]). Tatsächlich kommt innerhalb von Elasticesearch, egal ob in Form eines Strings oder eines Arrays, die Breite zuerst und die Länge zuletzt. In den Anfangstagen wurde jedoch, um sich an die Formatierungsspezifikation von GeoJSON anzupassen, die Darstellung von Array-Formen angepasst. Das wird auf der offiziellen Website erklärt.
Es gibt im Allgemeinen folgende Abfrageanforderungen für geo_point Typen

Distanzanfrage
Finde Punkte in Reichweite vom Mittelpunkt

Distanzbereichsabfrage (veraltet)
Das Abfragen von Punkten innerhalb des angegebenen Bereichs des Mittelpunkts wird in der neuen ES-Version aus der API entfernt, daher werde ich das hier nicht zu sehr erklären
Begrenzungsanfrage
Finde Punkte innerhalb eines Rechtecks, das aus einem bestimmten Punkt besteht

Polygon-Abfrage
Finde Punkte in einem Polygon, das aus mehreren Punkten besteht

Die SearchSourceBuilder-Fabrik, die für verschiedene Abfragen in Java aufgebaut wurde, ist wie folgt:


Dienst wie folgt:

Der Code der Controller-Schicht ist wie folgt:

[1]. Wie man sie einsetzt

Bevor wir geo_point Typen verwenden, sollten wir zunächst explizit das Feld als geo_point Typ per Abbildung beim Erstellen des Index angeben, wie folgt:


Oben haben wir einen neuen Index namens restraunt erstellt, und in seiner Mapping-Datei geben wir explizit den Typ des "Standort"-Feldes als "geo_point" an.

[2] Bereite einige Daten vor

Zu Kibana haben wir folgende Daten erstellt:


Wir haben oben sieben Datenstücke vorbereitet und müssen dann die Abfrage ausführen, um zu sehen, ob unsere Benutzeroberfläche unseren Anforderungen entspricht.

[3] Untersuchung

Abfragedistanz


Die anderen beiden Anfragen sind dieselben wie oben.




Vorhergehend:ElasticsearchParseException[field muss entweder [lat], [lon] oder [geohash]] sein
Nächster:Discuz installiert die App und sagt "Daten werden nicht erkannt, bitte geben Sie sie zurück" – eine Umgehung
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com