Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

序文

このプロジェクトでは ElasticSearch を使用する予定です。後の開発で問題が起きないように、早めに開始する必要があります。インストール プロセス全体を通じて、次の 3 つの問題が発生しました。

  • Dockerのインストールは非常に遅い
  • ElasticSearch-Head接続がクロスドメインで表示される
  • ElasticSearch-Head 操作で 406 エラー コードが報告される

1. Dockerをインストールする

現時点では、Kaka の Docker に対する理解は表面的なものにすぎません。わからないことは、どんどん使ってみてください。使えば使うほど、自然と習得できるようになります。

依存パッケージをインストールし、コマンドyum install -y yum-utils device-mapper-persistent-data lvm2実行します。

この時点で docker インストール コマンドを直接実行すると、非常に遅く、待機プロセスが長くなることがわかります。

この問題は、国内のソースyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoを構成することで解決できます。ここで使用するソースは Alibaba Cloud です。

次にyum install docker-ce docker-ce-cli containerd.ioコマンドを実行して、docker をインストールします。

systemctl enable docker enable docker

systemctl start dockerコマンドを実行してDockerを起動します。

dockerのバージョンをチェックして、正常にインストールされているかどうかを確認します。

Dockerバージョン

以前の docker のインストールに問題がある場合は、 yum remove docker-ceを実行してそれを削除し、 /var/lib/dockerの下にあるすべてを削除します。

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

このエラーについて Baidu で検索したところ、転送が有効になっていないことがわかりました。ネットワーク ブリッジを構成した後、転送を有効にする必要があります。

転送が有効になっていない場合、ネットワークが存在しないことを示す上記のエラーが表示されます。

解決

設定ファイル/etc/sysctl.confを変更し、 net.ipv4.ip_forward=1を追加して、サービスsystemctl restart networkを再起動し、設定を有効にします。

2. ElasticSearchをインストールする

dockerを使用してesイメージを直接取得し、コマンドdocker pull elasticsearch:7.7.0を実行します。

実行が完了したら、docker images を実行して、前の手順でプルされたイメージを確認します。

esミラー記事

このイメージを使用して、コンテナの作成を開始できます。次に、es コンテナを作成します。

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 はコンテナ名を示します

-d: コンテナをバックグラウンドで実行し、コンテナ ID を返します。

-e: コンテナ内の環境変数を指定します

-p: ホストポート: コンテナポートの形式でポートマッピングを指定します

コマンドを実行すると、コンテナ ID が返されます。次に、docker ps -a を実行してすべてのコンテナを一覧表示します。

esコンテナ

esのデフォルトポートは9200です。IPアドレス+ポート番号のみで直接アクセスすると以下の図が返ってきます。このインターフェースが表示されれば、インストールが成功したことになります。

結果を返す

この時点で、Docker を使用して ElasticSearch を簡単にインストールしました。次に、ElasticSearch のクライアント ツールをインストールします。

3. ElasticSearch-Headをインストールする

Dockerはクイックインストールにも使用されます。上記のように、まずイメージをプルし、コマンドdocker pull mobz/elasticsearch-head:5を実行します。

次にコンテナを作成し、 docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5実行します。

ElasticSearch-Headプラグインをインストールする

写真の鮮明さを保つため、写真が完全には写っていません。これは、Kaka さんが次に教えてくれることでもあります。コンテナを 2 回作成する際の違いに注目してください。

ElasticSearch をインストールすると、コンテナーは正常に作成された後、バックグラウンドで直接実行されますが、ElasticSearch-Head をインストールする場合はこれが一貫していません。

代わりに、コンテナ名とポート番号を指定して直接実行します。実行が完了すると、コンテナは作成されますが、実行されません。

つまり、上の画像の右下隅にボックスがあります。ここでステータスを確認すると、作成済みであることがわかります。

したがって、コンテナdocker start 容器id起動するという別の操作が必要になります。

インストールが完了すると、域名とポート9100を使用して直接アクセスできるようになります。

クロスドメインの問題

クロスドメインの処理

ElasticSearch に接続すると、接続できないことがわかります。フロントエンドとバックエンドが別々に開発されているため、クロスドメインの問題が発生し、サーバー上でクロスドメイン処理を実行する必要があります。

コマンドdocker exec -it elasticsearch /bin/bashを実行して、最初の手順で作成した ElasticSearch コンテナに入り、構成ファイルvi config/elasticsearch.ymlを変更します。

http.cors.enabled: 有効
http.cors.allow-origin: "*"

上記の 2 行を設定ファイルに記述します。これは yml 設定ファイルであることに注意してください。このタイプの設定ファイルの構文の詳細を以下に示します。

  • コロンの後にはスペースが必要です。
  • 階層関係をインデントするにはスペースを使用します。左側にキーの列がある限り、スペース データは重要ではありません。
  • 大文字と小文字を区別します
  • インデントにはタブは使用できません。スペースのみ使用できます。

設定を変更したら、 exitコマンドを実行してコンテナを終了し、 docker restart 容器IDを実行してコンテナを再起動する必要があります。

406 エラーの処理

この時点で、 ElasticSearch-Headを介してElasticSearchに正常に接続できますが、データ操作を実行すると 406 エラーが報告されます。

ElasticSearch-Head コンテナ内の構成を変更し、変更のために構成ファイルをホスト マシンにコピーするだけです。

docker cp 容器ID:/usr/src/app/_site/vendor.js /usr/local/を実行します。このコマンドは、docker コンテナ内のファイルをホスト ディレクトリにコピーします。

/usr/local に移動すると、コンテナからコピーされた vendor.js ファイルが表示されます。

ファイルの 6886 行目と 7574 行目を修正し、「application/x-www-from-urlencodes」を「application/json; charset=UTF-8」に変更します。

変更後、ファイルをコンテナにコピーします。コンテナからホストにファイルをコピーするコマンドは以前に使用したことがあるため、2つのディレクトリを逆にして、 docker cp /usr/local/vendor.js 容器ID:/usr/src/app/_site実行します。

最後のステップは、ElasticSearch-Head コンテナ重啟です。

4. IK Tokenizerをインストールする

まず最初に質問させてください。ElasticSearch には独自の単語セグメンターがあるのに、なぜ IK 単語セグメンターを使用する必要があるのでしょうか?

ElasticSearch の単語セグメンテーションは、中国語の文字を個々の文字に分割します。たとえば、「Today is Friday」は、「今」、「天」、「是」、「周」、「五」に分割されます。これは明らかに不適切です。ほとんどのシナリオでは、文字ではなく単語が必要です。

したがって、この問題を解決するには、中国語単語セグメンテーション IK をインストールする必要があります。

IK は、ik_smart と ik_max_word という 2 つの単語分割アルゴリズムを提供します。ik_smart は分割が最も少なく、ik_max_word は最も詳細です。それらの違いについては次の記事で紹介します。

ここで注意すべき点は、インストールされたバージョンが ElasticSearch のバージョンと一致している必要があることです。

ElasticSearchコンテナを入力しますdocker exec -it 容器ID /bin/bash

wget を使用してインストールします。wget wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip実行します。

wget を使用してインストールしたときに、 Unable to establish SSL connectionメッセージが表示された場合は、次の 2 つのコマンドを実行します。

yum インストール opensslls

yum で openssl-devel をインストールします

cd /usr/share/elasticsearch/pluginsを実行してプラグイン ディレクトリに移動し、 IKディレクトリを作成します。

圧縮パッケージをIKディレクトリに移動し、解凍コマンドelasticsearch-analysis-ik-7.7.0.zipを実行します。

次に、圧縮されたパッケージを削除します。この時点で、config パッケージといくつかの jar パッケージが表示されます。

解凍されたパッケージ

最後に、コンテナを終了してコンテナを再起動します。

V. 結論

この記事では、ElasticSearch を使用するために必要なものがすべて準備されています。次の記事では、PHP の Laravel を使用して、すべての ElasticSearch クエリ メソッドをカプセル化する方法を説明します。

後で、コピーを Go でカプセル化し、独自のツール クラスにコンテンツを追加します。

これで、Docker に ElasticSearch をインストールする手順についての記事は終了です。Docker に ElasticSearch をインストールする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker に ElasticSearch と Kibana をインストールする際の問題と解決策
  • DockerにElasticsearch7.6クラスタをインストールしてパスワードを設定する方法
  • Docker に Elasticsearch 7.6.2 をインストールするチュートリアル
  • ElasticSearch と ElasticSearch-Head の Docker デプロイメントの実装
  • Dockerを使用してelasticsearchとheadプラグインをインストールする方法を説明します

<<:  JSはスネークゲームを実装する

>>:  CSS のマージンの崩壊問題を解決する方法

推薦する

モバイルデバイス用のメタタグ設定の完全なリスト

序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...

Mysql の読み取り/書き込み分離期限切れに対する一般的な解決策

MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...

css n番目から始まるすべての要素を取得する

具体的なコードは次のとおりです。 <div id="ボックス"> &...

Vueカスタム命令とその使用方法の詳細な説明

目次1. 指令とは何ですか? Vue でよく使われる組み込みの v ディレクティブv-if と v-...

MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...

MacにHomebrewをインストールする際の注意点

最近、Xiao Ming は新しい Mac を購入し、独自のブログ Web サイトを構築したいと考え...

JS はランダム点呼システムを実装します

参考までに、JSを使用してランダム点呼システムを実装します。具体的な内容は次のとおりです。毎回の授業...

Windows での MySQL 8.0.18 インストール チュートリアル (図解)

ダウンロードダウンロードアドレス: https://dev.mysql.com/downloads/...

Dockerを使用してPythonランタイム環境の基本イメージを作成する方法

1. 準備1.1 Pythonインストールパッケージをダウンロードします(注:Pythonバージョン...

IIS7 IIS8 http は自動的に HTTPS にジャンプします (ポート 80 はポート 443 にジャンプします)

IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...

Dockerfile における ENTRYPOINT と CMD の違い

Docker システムの学習チュートリアルでは、Dockerfile を使用して Docker イメ...

MySQL 5.7.17 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

インターネット上にはMySQL 5.7.17のインストールチュートリアルがほとんどなく不十分なので、...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

vue-cli の紹介とインストール

目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...