[PYTHON] Schreiben Sie ein Skript, um die Entfernung mit dem Elasticsearch 5-System schmerzfrei zu berechnen

Da es ein Ersatz für ein Memo ist, wird die Erklärung des Hintergrunds usw. schlampig sein.

Was du machen willst

Berechnen Sie bei der Suche mit Elasticsearch 5.1.1 den Abstand zwischen dem Feld "geo_point" und dem in der Abfrage angegebenen Punkt und geben Sie ihn zurück. Ich wusste, wie man es in 2 Serien & Groovy macht, aber ich muss es reparieren, weil es 5 Serien & Schmerzlos wurde

Warum?

Groovy ist seit Elasticsearch 5.0.0 veraltet und eine neu entwickelte Sprache namens Painless ist zum Standard geworden. Sie müssen es also zuerst in schmerzlos ändern. Da die verschiedenen Hilfsmethoden, die in 2.0 verwendet werden können, abgeschafft wurden, ist es auch erforderlich, eine alternative Verarbeitung zu schreiben.

Korrekturen

Da ich es mit einem Python-Client verwendet habe, ist das Beispiel ein Diktat-Typ von Python, aber ich denke, dass der Inhalt von Inline üblich ist. Verwenden Sie es daher wie bei der REST-API oder beim Zugriff von einem Client einer anderen Sprache, hauptsächlich Inline Ich habe das Gefühl, dass ich nur den Inhalt von Params betrachten sollte.

location_field ist ein Feld vom Typ geo_distance, und width_value und longitude_value sind Variablen, die Breiten- und Längengrade enthalten.

Before

{
    "distance": {
        "script": {
            "lang": "painless",
            "inline": "doc[\"location_field\"].distanceInKm(lat, lon)",
            "params": {
                "lat": latitude_value
                 "lon": longitude_value
            }
        },
    }
}

After

{
    "distance": {
        "script": {
            "lang": "painless",
            "inline": "doc[\"location_field\"].arcDistance(params.lat, params.lon) * 0.001",
            "params": {
                "lat": latitude_value,
                "lon": longitude_value
            }
        },
    }
}

der Unterschied

Da distanceInKm veraltet ist, verwenden wir arcDistance. In diesem Fall ist die Einheit jedoch Reis, sodass sie durch Multiplikation mit 0,001 in km umgerechnet wird.

Ein weiterer Punkt ist, dass die in params definierten Variablen mit den zuvor definierten Namen verwendet werden könnten, aber aus irgendeinem Grund in der 5. Reihe (in schmerzlos?) War es notwendig, am Anfang params. hinzuzufügen.

Impressionen

Ich habe Groovy überhaupt nicht verwendet, aber die grundlegende Grammatik ist fast dieselbe, und ich glaube nicht, dass ich viel komplizierte Dinge tun werde. Wenn Sie also das Dokument lesen, ist es ganz so. Ich dachte jedoch, es wäre ziemlich schwierig, die abgeschaffte Hilfsmethode für 5 Serien neu zu schreiben ... (Ich kann den Verarbeitungsinhalt der Hilfsmethode nicht verstehen, selbst wenn ich das Elasticsearch-Dokument lese und welche Hilfsmethode schmerzlos ist Ich weiß nicht, ob es verwendet werden kann.

In der Dokumentation wird auch das Debuggen beschrieben, aber ich habe es nicht getan, da das Lesen nur eine Verarbeitungszeile mühsam zu lesen ist (** Daher dauert es fast eine Stunde, um diese eine Inline-Zeile zu reparieren). Es dauerte**)

Es ist zu einem klagenden Eintrag geworden, aber es ist sehr wahrscheinlich, dass ich schlecht bin, wenn ich das Dokument richtig lese, also werde ich es wieder lesen, wenn ich um Mitternacht die Spannung los bin

Recommended Posts

Schreiben Sie ein Skript, um die Entfernung mit dem Elasticsearch 5-System schmerzfrei zu berechnen
Schreiben Sie ein Python-Programm, um die Bearbeitungsentfernung [Python] [Levenshtein-Entfernung] zu ermitteln.
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Erstellen Sie ein Sternensystem mit Blender 2.80-Skript
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
Überlegen Sie, wie Sie einen Filter mit den Shotgun API-Contact-Versionen schreiben
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
So berechnen Sie die Volatilität einer Marke
Speichern Sie das Objekt in einer Datei mit pickle
Schreiben Sie ein Skript, um einen MySQL-Dump in TSV zu konvertieren
Ich möchte mit Python in eine Datei schreiben
Schreiben wir ein entsprechendes Ping-Bestätigungsskript
Fühlen Sie sich frei, einen Test mit der Nase zu schreiben (im Fall von + gevent)
Berechnen Sie mit scipy.optimize die optimale Lösung, um einen Weltrekord für zehn Arten von Wettbewerb aufzustellen
So schreiben Sie eine GUI mit dem Befehl maya
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Schritte zur Berechnung der Wahrscheinlichkeit einer Normalverteilung
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Übergang zum Update-Bildschirm mit dem Django-Tag
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Ein Skript, mit dem Sie mit der LINE Messaging-API auf einfache Weise umfangreiche Menüs erstellen können
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Ich habe das Windows PowerShell-Kochbuch durch ein Python-Skript ersetzt.
[Linux] Kopieren Sie Daten mit einem Shell-Skript von Linux nach Windows
Suche nach einer Lösung für das N-Queen-Problem mit einem genetischen Algorithmus (2)
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Schreiben Sie ein Programm, um den 4x4x4 Rubik Cube zu lösen! 1. Übersicht
Der erste Schritt beim Erstellen einer serverlosen Anwendung mit Zappa
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Ich werde nie vergessen, wie man ein Shell-Skript schreibt, nicht vergessen! !!
Eine Geschichte über den Umgang mit dem CORS-Problem
Die übliche Art, einen Kernel mit Jupyter Notebook hinzuzufügen
[Linux] Schreiben Sie ein Bereitstellungstool mit rsync und einem Shell-Skript
Suche nach einer Lösung für das N-Queen-Problem mit einem genetischen Algorithmus (1)
Schreiben Sie mit Python in csv
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Schreiben Sie die Messung der Verarbeitungszeit mit der with-Klausel etwas einfacher
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
[Blender] Skript zum Überprüfen, ob es sich bei dem ausgewählten um ein Netz handelt
Schreiben Sie ein Programm, um den 4x4x4 Rubik Cube zu lösen! 2. Algorithmus
Schreiben Sie ein Programm, um den 4x4x4 Rubik Cube zu lösen! 3. Implementierung
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Bedingte Verzweigung aufgrund des Vorhandenseins einer Shell-Skriptdatei
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
Ich habe ein Skript geschrieben, mit dem Sie mit hoher Geschwindigkeit mit AtCoder beginnen können!
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
Schreiben Sie ein Programm, das das Programm missbraucht und 100 E-Mails sendet
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
So schreiben Sie eine Dokumentzeichenfolge, um ein benanntes Tupeldokument mit Sphinx zu erstellen
Versuchen Sie, Elasticsearch als Grundlage für Ihr Frage- und Antwortsystem zu verwenden
[AWS / Tello] Aufbau eines Systems zum Betrieb von Drohnen in der Cloud
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Wie berechnet man den Autokorrelationskoeffizienten?