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 のマージンの崩壊問題を解決する方法

推薦する

iostat を使用して Linux ハードディスクの IO パフォーマンスを表示する方法

TOP 観察: IO 待機に占められる CPU 時間の割合。30% を超えると、IO の負荷が高くな...

VMware 仮想マシンで HTTP サービスを確立して分析する手順

1. xshell を使用して仮想マシンに接続するか、仮想マシンに直接コマンドを入力します。以下はx...

スケルトンスクリーン効果を実現する CSS

ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

Vue 手書き読み込みアニメーション プロジェクト

ページが応答しない場合、白い画面が表示されないように、読み込みアニメーションを表示するのがユーザーフ...

画像ソーシャルネットワーキングサイトのUIアプリケーションの比較分析(図)

私たちの生活、仕事、勉強において、ソーシャル ネットワークは徐々に将来のインターネット発展のトレンド...

コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

モバイルインターネット時代: レスポンシブウェブデザインが一般的なトレンドに

今はモバイルインターネットが急速に発展している時代です。スマートフォンやタブレットはますます普及し、...

(MariaDB) MySQL のデータ型とストレージメカニズムの包括的な説明

1.1 データ型の概要データ型は、各フィールドに保存できるデータの種類、保存できるデータの量、保存で...

docker イメージのプル速度が遅い問題の解決策

現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...

Docker コンテナのネットワーク障害に対する 6 つの解決策

Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...

Windows に MySQL をインストールする方法のグラフィック チュートリアル

概要: この記事では主に、Windows 環境に MySQL をインストールする方法について説明しま...

MySQL UPDATE ステートメントの「典型的な」落とし穴

目次1. 問題のあるSQL文たとえば、次の図のような質問をした人がいました。 問題は次のように要約で...

Vue はブラウザのパスワード記憶機能を無効にするサンプル コードを実装します

情報を探すインターネットで見つかったいくつかの方法: autocomplete="off&...

js 基本構文と Maven プロジェクト構成チュートリアル ケース

目次1. jsステートメント2番目、js配列3. js関数4. メイヴンV. 結論1. jsステート...