[PYTHON] Starten Sie in 5 Minuten einen einfachen passwortgeschützten Suchdienst

TL; DR (Zusammenfassung für erfahrene Personen)

Ich habe docker-compose.yml erstellt, eine Sammlung der folgenden Container:

--Elasticsearch: Suchmaschine

Hintergrund

Vielleicht möchten Sie in Ihrem Zuhause nach Textdaten suchen, oder?

Die Suchfunktion selbst kann von Elasticsearch bereitgestellt werden.

In vielen Fällen kommen Anfragen wie ... zusammen.

Wir haben eine Umgebung geschaffen, um die oben genannten Anforderungen zu erfüllen. [^ 1]

[^ 1]: Die Basisauthentifizierung ist möglicherweise etwas raffinierter, wenn Sie [Elasticsearch Security] verwenden (https://www.elastic.co/jp/blog/getting-started-with-elasticsearch-security). Es könnte möglich sein. Die unten vorgestellte Methode verwendet außerdem eine http-Verbindung und ist in Bezug auf die Sicherheit robust. Daher sollten Sie sie unter Bezugnahme auf diesen Artikel in https konvertieren: https://qiita.com/hsano/items/3b4fb372c4dec0cabc08

Was ich gemacht habe

Sie finden sie alle in diesem Repository: https://github.com/chopstickexe/es-kibana-nginx-python

Die Hauptinhalte sind wie folgt:

--docker-compose.yml: Einstellungsdatei zum Starten und Verknüpfen von 4 Containern von Elasticsearch, Kibana, Nginx, Python3 --index.py: Beispielcode zum Registrieren (Indizieren) von Daten bei Elasticsearch in einem Python3-Container --data / sample.csv: In index.py registrierte Beispieldaten (Wie Sie sehen können, gibt es 4 persönliche Eindrücke von Nolans Arbeit)

Docker Compose Übersicht

Mit diesem Docker-Compose wird die folgende Umgebung gestartet: IMG_0028.jpg

[^ 2]: Verwenden Sie außerdem die Remote-Container-Erweiterung von VSCode, um eine Verbindung zu einem Container herzustellen und den Code zu bearbeiten / auszuführen. Ist auch möglich.

Wie man sich bewegt

Die folgende Erklärung basiert auf Ubuntu 18.04. Wenn die Umgebung jedoch so ist, dass Docker-Compose und Apache HTTP-Server (genauer gesagt der Befehl htpasswd) ausgeführt werden können, funktioniert dies unter CentOS, Mac und Windows.

Vorbereitung 1. Installation von Docker-Compose

Bereiten Sie zunächst eine Umgebung vor, in der Docker-Compose installiert ist. Referenz

Vorbereitung 2. Installieren von Apache HTTP Server

Installieren Sie zunächst apache2-utils (ein Paket, das einen HTTP-Server enthält).

$ sudo apt -y install apache2-utils

1. Klonen Sie in das Git-Repository

Klonen Sie das obige Repository chopstickexe / es-kibana-nginx-python.

2. Vorbereitung der Login-ID und des Passworts

Überlegen Sie sich dann eine ID und ein Passwort, um sich bei Kibana anzumelden (Suchbildschirm), die danach gestartet werden. (Im folgenden Beispiel melden Sie sich mit ID = admin an.)

Führen Sie den Befehl htpasswd wie folgt aus, um die Datei (Klonverzeichnis) / htpasswd / localhost mit dem festgelegten Kennwort zu erstellen.

$ cd /path/to/repo
$ mkdir htpasswd && cd htpasswd
$ htpasswd -c localhost admin 
#Geben Sie hier Ihr Passwort ein

3. (Optional) Bearbeiten Sie docker-compose.yml

Wenn Sie über einen Webbrowser von einem anderen Computer als dem Host auf Kibana zugreifen möchten

Öffnen Sie docker-compose.yml im geklonten Verzeichnis und wählen Sie Kibana-Container VIRTUAL_HOST-Einstellungen Ändern Sie # L25) von "localhost" in die IP-Adresse des Hosts oder eines vollqualifizierten Domänennamens wie "foo.bar.com".

Wenn bereits ein anderer Dienst auf Port 80 des Hosts ausgeführt wird

Port-Mapping des Nginx-Containers von 80: 80 bis Host frei Port: Wechseln Sie zu 80.

4. Starten Sie den Docker-Container

Starten Sie den Container mit dem folgenden Docker-Compose-Befehl.

$ cd /path/to/this/directory
$ docker-compose up

5. Stellen Sie sicher, dass Sie über Ihren Webbrowser auf Kibana zugreifen können

Wenn Sie docker-compose.yml nicht geändert haben, über den Host-Browser "http: // localhost", Wenn Sie es ändern, öffnen Sie im Browser Ihrer Umgebung "http: // Hostadresse", melden Sie sich mit der festgelegten ID und dem Kennwort an und überprüfen Sie, ob der Kibana-Bildschirm angezeigt wird.

6. Registrieren Sie Beispieldaten in Elasticsearch

Kehren Sie zum Terminal des Hostcomputers zurück und geben Sie den Python-Container mit dem folgenden Befehl ein:

$ docker exec -it python bash

Erstellen Sie nach dem Aufrufen des Python-Containers eine virtuelle Umgebung (venv) mit dem folgenden Befehl und installieren Sie dort die erforderlichen Pakete:

# python -m venv .venv
# source .venv/bin/activate
(.venv) # pip install -r requirements.txt

Fügen Sie nach der Installation des Pakets die Beispieldaten mit dem folgenden Befehl zum nolan-Index von Elasticsearch hinzu:

(.venv) # python index.py
Finished indexing

Das hier ausgeführte Python-Skript index.py ist hier. Unten wird der Datentyp der Spalte RELEASE_DATE auf "Datum" und das Format auf "JJJJMMTT" gesetzt.


    es.indices.create(
        index,
        body={
            "mappings": {
                "properties": {"RELEASE_DATE": {"type": "date", "format": "yyyyMMdd"}}
            }
        },
    )

7. Bestätigen Sie, dass Sie nach Kibana suchen können

Greifen Sie über Ihren Webbrowser erneut auf Kibana zu und stellen Sie Folgendes ein:

Indexmuster erstellen

Menü auf der linken Seite des Bildschirms (Wenn es nicht angezeigt wird, klicken Sie auf die drei oben links) Wählen Sie Kibana> Indexmuster aus und geben Sie "nolan" als Indexmusternamen ein. Wenn der obige Python-Code problemlos ausgeführt werden kann, wird die Meldung "Ihr Indexmuster entspricht 1 Quelle" angezeigt. Klicken Sie auf Nächster Schritt:

Screenshot from 2020-09-28 09-20-29.png

Setzen Sie die Spalte RELEASE_DATE in das Feld Zeit und klicken Sie auf Indexmuster erstellen.

Screenshot from 2020-09-28 09-20-45.png

Stellen Sie den Zeitbereich auf ~ 11 Jahre vor -> jetzt auf dem Bildschirm "Entdecken" ein

Wählen Sie im Menü auf der linken Seite des Bildschirms die Option Entdecken, klicken Sie auf das Kalendersymbol in der Mitte des Bildschirms und stellen Sie den Zeitraum auf Relativ> vor 11 Jahren ein. (Da es eine ziemlich alte RELEASE_DATE-Überprüfung enthält, wird die Suche nur ausgeführt, wenn Sie dies tun.)

Bei korrekter Einstellung werden 4 Bewertungen wie folgt angezeigt:

Screenshot from 2020-09-28 09-18-20.png

Sie können auf diesem Discover-Bildschirm auch nach Bewertungen suchen, die "Tom Hardy" enthalten:

Screenshot from 2020-09-28 09-18-48.png

Referenzmaterial

Informationen zur Verwendung von Kibana finden Sie auch hier: https://qiita.com/namutaka/items/b67290e75cbd74cd9a2f

Recommended Posts

Starten Sie in 5 Minuten einen einfachen passwortgeschützten Suchdienst
Schreiben Sie eine Dichotomie in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Implementierung eines einfachen Algorithmus in Python 2
Starten Sie das Python-Skript im Dienst
Führen Sie einen einfachen Algorithmus in Python aus
Ein einfacher HTTP-Client, der in Python implementiert ist
Versuchen Sie, eine einfache Animation in Python zu zeichnen
Erstellen Sie eine einfache GUI-App in Python
Schreiben Sie eine einfache Giermethode in Python
Starten Sie eine Flask-App in Python Anywhere
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Flask-Erstellen Sie einen Webdienst mit SQLAlchemy + PostgreSQL
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Einfache Pub / Sub-Programmhinweise in Python
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Richten Sie einen einfachen SMTP-Server in Python ein
Implementieren Sie eine ähnliche Gesichtssuche in einem halben Tag
[Docker] Erstellen Sie in 3 Minuten eine jupyterLab (Python) -Umgebung!
Schreiben Sie ein super einfaches molekulardynamisches Programm in Python
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Einführung von gae-init zum Starten von CMS auf GAE in 5 Minuten
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
[Einfache Vorgehensweise] Um sich ohne Passwort bei ssh anzumelden