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 データ型の完全分析

データ型: 列に格納できるデータとそのデータが実際にどのように格納されるかを定義する基本ルール。デー...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

Mysql データベースのマスタースレーブ同期構成

目次Mysql マスタースレーブ同期構成1. 2つのmysqlをインストールする2. MySQL設定...

メタタグの詳しい説明(メタタグの役割)

個人のウェブサイトがどんなに素晴らしいものであっても、サイバースペースの広大な海に浮かぶ小さなボート...

MySQLフィールドのデフォルト値を設定する方法

目次序文: 1. デフォルト値に関する操作2. 使用上の提案要約:序文: MySQL では、テーブル...

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

Centos7.3 Nginx をインストールして展開し、https を設定する方法

設置環境1. gccのインストールnginxをインストールするには、まず公式サイトからダウンロードし...

docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:

Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL kill コマンドの使用ガイド

KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...

Tomcat を設定して IntelliJ IDEA 2018 で最初の Java Web プロジェクトを実行する方法

1 Tomcatをダウンロードして起動する公式サイト http://tomcat.apache.or...

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...

mysql スケジュールタスク (イベント イベント) の詳細な説明

1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...

mysql8 共通テーブル式 CTE 使用例の分析

この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...

CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator バージョン: 2.3.4ほとんどのゲームにはレイヤー管理機能があり、例えば...