So installieren Sie ElasticSearch auf Docker in einem Artikel

So installieren Sie ElasticSearch auf Docker in einem Artikel

Vorwort

Das Projekt wird ElasticSearch verwenden. Um Verzögerungen bei der späteren Entwicklung zu vermeiden, müssen wir früh beginnen. Während des gesamten Installationsvorgangs sind uns die folgenden drei Probleme begegnet.

  • Die Docker-Installation ist sehr langsam
  • Die ElasticSearch-Head-Verbindung erscheint domänenübergreifend
  • ElasticSearch-Head-Operation meldet Fehlercode 406

1. Docker installieren

Derzeit versteht Kakas Docker nur oberflächlich. Für Dinge, die Sie nicht verstehen, sollten Sie sie häufiger verwenden. Je häufiger Sie sie verwenden, desto besser werden Sie sie auf natürliche Weise beherrschen.

Installieren Sie das Abhängigkeitspaket und führen Sie den Befehl yum install -y yum-utils device-mapper-persistent-data lvm2

Wenn Sie den Docker-Installationsbefehl zu diesem Zeitpunkt direkt ausführen, werden Sie feststellen, dass er sehr langsam ist und der Wartevorgang lange dauert.

Das Problem kann durch Konfigurieren der inländischen Quelle yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo Die hier verwendete Quelle ist Alibaba Cloud.

Führen Sie dann den Befehl yum install docker-ce docker-ce-cli containerd.io aus, um Docker zu installieren.

Konfigurieren Sie systemctl enable docker enable docker

Führen Sie systemctl start docker aus, um Docker zu starten

Überprüfen Sie die Docker-Version, um festzustellen, ob sie erfolgreich installiert wurde

Docker-Version

Wenn es ein Problem mit der vorherigen Docker-Installation gibt, führen Sie yum remove docker-ce aus, um es zu löschen, und löschen Sie alles unter /var/lib/docker .

WARNING: IPv4 forwarding is disabled. Networking will not work.

Ich habe Baidu nach diesem Fehler durchsucht und festgestellt, dass die Weiterleitung nicht aktiviert war. Nachdem die Netzwerkbrücke konfiguriert wurde, muss die Weiterleitung aktiviert werden.

Wenn die Weiterleitung nicht aktiviert ist, wird der obige Fehler angezeigt, der darauf hinweist, dass kein Netzwerk vorhanden ist.

Lösung

Ändern Sie die Konfigurationsdatei /etc/sysctl.conf , fügen Sie net.ipv4.ip_forward=1 hinzu und starten Sie dann den Dienst systemctl restart network neu, damit die Konfiguration wirksam wird.

2. Installieren Sie ElasticSearch

Verwenden Sie Docker, um das ES-Image direkt abzurufen, und führen Sie den Befehl docker pull elasticsearch:7.7.0 aus

Führen Sie nach Abschluss der Ausführung Docker-Images aus, um das im vorherigen Schritt abgerufene Image anzuzeigen.

es Spiegel Artikel

Mit dem Image können Sie mit der Erstellung von Containern beginnen. Erstellen Sie als Nächstes einen es-Container.

Führen Sie docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

--name gibt den Containernamen an

-d: Führen Sie den Container im Hintergrund aus und geben Sie die Container-ID zurück.

-e: Geben Sie die Umgebungsvariablen im Container an

-p: Gibt die Portzuordnung im Format „Host-Port: Container-Port“ an.

Nachdem der Befehl ausgeführt wurde, wird die Container-ID zurückgegeben. Führen Sie dann docker ps -a aus, um alle Container aufzulisten.

es-Container

Der Standardport von es ist 9200. Wenn Sie direkt darauf zugreifen und dabei nur die IP-Adresse + Portnummer verwenden, wird die folgende Zahl zurückgegeben. Das Erscheinen dieser Schnittstelle zeigt an, dass Ihre Installation erfolgreich war.

Ergebnisse zurückgeben

An diesem Punkt haben wir ElasticSearch schnell mit Docker installiert und werden dann die Client-Tools für ElasticSearch installieren.

3. Installieren Sie ElasticSearch-Head

Docker wird auch für die schnelle Installation verwendet. Wie oben beschrieben, ziehen Sie zuerst das Image und führen Sie den Befehl docker pull mobz/elasticsearch-head:5 aus.

Erstellen Sie dann einen Container und führen Sie docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

Installieren Sie das ElasticSearch-Head-Plugin

Um die Klarheit des Bildes zu gewährleisten, wird das Bild nicht vollständig aufgenommen. Dies wird Ihnen Kaka auch als nächstes erklären. Achten Sie auf den Unterschied, wenn Sie den Container zweimal erstellen.

Bei der Installation von ElasticSearch läuft der Container nach der erfolgreichen Erstellung direkt im Hintergrund, bei der Installation von ElasticSearch-Head ist dies jedoch nicht konsistent.

Geben Sie stattdessen den Containernamen und die Portnummer an und führen Sie ihn direkt aus. Nach Abschluss der Ausführung wird ein Container erstellt, aber nicht ausgeführt.

Das heißt, in der unteren rechten Ecke des Bildes oben befindet sich ein Feld. Sie können hier den Status sehen und feststellen, dass es „Erstellen“ lautet.

Daher ist ein weiterer Vorgang erforderlich, nämlich das Starten des Containers docker start 容器id .

Nach Abschluss der Installation können Sie über域名plus Port 9100 direkt darauf zugreifen.

Domänenübergreifende Probleme

Umgang mit domänenübergreifenden Vorgängen

Wenn Sie eine Verbindung zu ElasticSearch herstellen, werden Sie feststellen, dass keine Verbindung hergestellt werden kann. Da Front-End und Back-End separat entwickelt werden, treten domänenübergreifende Probleme auf und die domänenübergreifende Verarbeitung muss auf dem Server erfolgen.

Führen Sie den Befehl docker exec -it elasticsearch /bin/bash aus, um den im ersten Schritt erstellten ElasticSearch-Container aufzurufen und die Konfigurationsdatei vi config/elasticsearch.yml zu ändern.

http.cors.enabled: wahr
http.cors.allow-origin: "*"

Schreiben Sie die beiden obigen Zeilen in die Konfigurationsdatei. Beachten Sie, dass dies eine YML-Konfigurationsdatei ist. Hier sind einige Syntaxdetails zu diesem Typ von Konfigurationsdatei.

  • Nach dem Doppelpunkt muss ein Leerzeichen stehen.
  • Verwenden Sie Leerzeichen, um die hierarchische Beziehung einzurücken. Leerzeichendaten sind nicht wichtig, solange sich links eine Spalte mit Schlüsseln befindet.
  • Sehr empfindlich auf Groß- und Kleinschreibung
  • Zur Einrückung sind keine Tabulatoren zulässig, nur Leerzeichen sind erlaubt.

Nachdem die Konfiguration geändert wurde, müssen Sie den Befehl exit ausführen, um den Container zu beenden, und dann docker restart 容器ID ausführen, um den Container neu zu starten.

Umgang mit 406-Fehlern

An diesem Punkt können Sie erfolgreich über ElasticSearch-Head eine Verbindung zu ElasticSearch herstellen, aber beim Ausführen von Datenvorgängen wird ein 406-Fehler gemeldet.

Sie müssen nur die Konfiguration im ElasticSearch-Head-Container ändern und die Konfigurationsdatei zur Änderung auf den Hostcomputer kopieren.

Führen Sie docker cp 容器ID:/usr/src/app/_site/vendor.js /usr/local/ aus. Dieser Befehl kopiert die Dateien im Docker-Container in Ihr Host-Verzeichnis.

Gehen Sie zu /usr/local und Sie können die aus dem Container kopierte Datei vendor.js sehen.

Ändern Sie die Zeilen 6886 und 7574 der Datei und ändern Sie „application/x-www-from-urlencodes“ in „application/json; charset=UTF-8“.

Kopieren Sie die Datei nach der Änderung in den Container. Der Befehl zum Kopieren von Dateien vom Container auf den Host wurde bereits zuvor verwendet. Jetzt müssen Sie nur noch die beiden Verzeichnisse umkehren und docker cp /usr/local/vendor.js 容器ID:/usr/src/app/_site

Der letzte Schritt besteht darin, den ElasticSearch-Head-Container重啟.

4. Installieren Sie IK Tokenizer

Lassen Sie mich zunächst eine Frage stellen: Warum müssen wir den IK-Wortsegmentierer verwenden, wenn ElasticSearch über einen eigenen Wortsegmentierer verfügt?

Der Wortsegmentierer in ElasticSearch zerlegt chinesische Schriftzeichen in einzelne Zeichen. Beispielsweise wird „Heute ist Freitag“ in „今“, „天“, „是“, „周“ und „五“ zerlegt. Dies ist offensichtlich unangebracht. In den meisten Fällen werden Wörter und keine Zeichen benötigt.

Daher müssen Sie den chinesischen Wortsegmentierer IK installieren, um dieses Problem zu lösen.

IK bietet zwei Algorithmen zur Wortsegmentierung: ik_smart und ik_max_word, wobei ik_smart die geringste und ik_max_word die detaillierteste Segmentierung bietet. Die Unterschiede zwischen ihnen werden Ihnen im nächsten Artikel vorgestellt.

Hierbei ist zu beachten, dass die installierte Version mit der ElasticSearch-Version übereinstimmen muss.

Geben Sie den ElasticSearch-Container ein docker exec -it 容器ID /bin/bash

Verwenden Sie zur Installation wget und führen Sie wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip aus.

Wenn Sie wget zur Installation verwenden und die Meldung Unable to establish SSL connection erscheint, führen Sie die folgenden beiden Befehle aus.

yum installiere OpenSSLs

yum installiere OpenSSL-Devel

Führen Sie cd /usr/share/elasticsearch/plugins aus, um zum Plugin-Verzeichnis zu gelangen und ein IK -Verzeichnis zu erstellen.

Verschieben Sie das komprimierte Paket in das IK Verzeichnis und führen Sie den Dekomprimierungsbefehl elasticsearch-analysis-ik-7.7.0.zip aus

Löschen Sie dann das komprimierte Paket. Zu diesem Zeitpunkt können Sie ein Konfigurationspaket und mehrere JAR-Pakete sehen.

Entpacktes Paket

Beenden Sie abschließend den Container und starten Sie ihn neu.

V. Fazit

In diesem Artikel steht alles bereit, was Sie zur Verwendung von ElasticSearch benötigen. Im nächsten Artikel erfahren Sie, wie Sie mit Laravel von PHP alle Abfragemethoden von ElasticSearch kapseln.

Später werde ich eine Kopie in Go kapseln und meiner eigenen Tool-Klasse einige Inhalte hinzufügen.

Damit ist dieser Artikel über den Installationsprozess von ElasticSearch auf Docker abgeschlossen. Weitere Informationen zur Installation von ElasticSearch auf Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Probleme und Lösungen bei der Installation von ElasticSearch und Kibana in Docker
  • So installieren Sie den Elasticsearch7.6-Cluster im Docker und legen ein Kennwort fest
  • Tutorial zur Installation von Elasticsearch 7.6.2 in Docker
  • Implementierung der Docker-Bereitstellung von ElasticSearch und ElasticSearch-Head
  • Erfahren Sie, wie Sie Elasticsearch- und Head-Plugins mit Docker installieren.

<<:  JS implementiert das Schlangenspiel

>>:  So lösen Sie das Problem des Randkollapses in CSS

Artikel empfehlen

JS-Interviewfrage: Kann forEach aus der Schleife aussteigen?

Als mir diese Frage gestellt wurde, war ich unwis...

Mehrere Möglichkeiten zum Ändern des MySQL-Passworts

Vorwort: Bei der täglichen Verwendung der Datenba...

Implementierung der Nginx-Konfiguration https

Inhaltsverzeichnis 1: Bereiten Sie das https-Zert...

Tutorial zur Installation von VMware, Nmap und Burpsuite

Inhaltsverzeichnis VMware BurpSuite 1. Virtuelles...

Schauen wir uns einige leistungsstarke Operatoren in JavaScript an

Inhaltsverzeichnis Vorwort 1. Null-Koaleszenzoper...

Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Vorwort Der Befehl „Explain“ ist die primäre Mögl...

So konfigurieren Sie Http, Https, WS und WSS in Nginx

Vorne geschrieben Im heutigen Internetbereich ist...

Implementierung eines einfachen Altersrechners auf Basis von HTML+JS

Inhaltsverzeichnis Vorwort Demonstrationseffekt H...

MySQL ruft die aktuelle Datums- und Uhrzeitfunktion ab

Holen Sie sich das aktuelle Datum + die aktuelle ...

Zusammenfassung der SQL-Deduplizierungsmethoden

Wenn wir SQL zum Extrahieren von Daten verwenden,...

Verwenden des JS-Timers zum Verschieben von Elementen

Verwenden Sie einen JS-Timer, um ein Element zu e...

Der Unterschied zwischen schreibgeschützt und deaktiviert

Um es zusammenzufassen: „Nur lesen“ ist nur für Ei...