最近、同社はファイル管理システムを開発し、全文検索機能を実現する必要があるため、Elasticsearch、kibana、およびその関連プラグインの Analysis-ik、elasticsearch-head、および ingest-attachment について調査を行っています。上記のサービスを Docker コンテナにデプロイする方法を詳しく紹介します。
まず第一に: インストールのバージョンを確認することは非常に重要です。そうでないと大変なことになります。
このプロジェクトは Ruoyi フレームワークを採用しています。現時点では、Ruoyi フレームワークの最新バージョンは Spring Boot 依存関係 2.5.14 を参照しています。
依存関係を表示するには、Maven ウェアハウス https://mvnrepository.com/ にログインしてください。
elasticsearch を検索すると、Spring Boot フレームワークで参照されているバージョンが 7.12.1 であることがわかります。そのため、次のインストール手順とその後の開発はバージョン 7.12.1 に基づいています。
1.elasticsearchをインストールする
1.画像をプルします
docker pull elasticsearch:7.12.1
2. コンテナを作成して起動する
docker run --name=es -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v $PWD/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/data:/usr/share/elasticsearch/data \
-v $PWD/logs:/usr/share/elasticsearch/logs \
-v $PWD/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.1
--name: コンテナーの名前付け
-p: マップポート
-e: シングルノード展開の場合、環境変数「discovery.type=single-node」を指定する必要があります。指定しないとエラーが報告されます。エラー内容は次のとおりです。
デフォルトの検出設定は運用環境での使用には適していません。[discovery.seed_hosts、discovery.seed_providers、cluster.initial_master_nodes] のうち少なくとも 1 つを構成する必要があります
-v: マウント ディレクトリ。$PWD は現在のディレクトリです。
-d: コンテナはバックグラウンドで実行されます
3. エラー報告、許可なし
次のようにログを確認します。
docker logs 容器ID
ディレクトリに権限を与えて再起動します。
chmod -R 777 $PWD
4. サービスへのアクセス、失敗しました
curl localhost:9200 は、サーバーからの空の応答というメッセージを返します
コンテナー内の /usr/share/elasticsearch/config/elasticsearch.yml ファイル内の xpack.security.enabled の値を false に変更します。
5. サービスにアクセスすると、インストールが成功します。
2. キバナをインストールする
1.画像をプルします
docker pull kibana:7.12.1
2. コンテナを作成して起動する
docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.io/kibana:7.12.1
--link: elasticsearch が kibana コンテナに接続されていることを指定します。そうでない場合は、サーバーの準備がまだできていないというエラーが報告されます。
3. サービスにアクセスしてテストする
http://サーバーIP:5601/app/dev_tools#/consoleにアクセスしてください。
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "冰糖码奇朵"
}
3. elasticsearch-analysis-ik をインストールします。
オンライン インストールのダウンロードは非常に遅く、エラーが何度も報告されるため、オフライン インストールが採用されています。
1. インストールパッケージをダウンロードする
https://github.com/medcl/elasticsearch-analysis-ik/releases
2.サーバーにアップロードする
アップロードしたディレクトリは usr/local/es/elasticsearch-analysis-ik-7.12.1.zip です。
3.コンテナ内にコピー
docker cp usr/local/es/elasticsearch-analysis-ik-7.12.1.zip 容器ID:/usr/share/elasticsearch
4. コンテナに入る
docker exec -it 容器ID /bin/bash
5. プラグインをインストールする
elasticsearch-plugin install file:/usr/share/elasticsearch/elasticsearch-analysis-ik-7.12.1.zip
以下のように、インストールが完了します。
6. コンテナを終了します
exit
7. elasticsearchを再起動します
docker restart 容器ID
4. elasticsearch-head をインストールする
1.画像をプルします
docker pull mobz/elasticsearch-head:5-alpine
2. コンテナを作成して起動する
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5-alpine
3. 接続エラーを解決する
構成ファイル elasticsearch.yml を変更し、次の 2 行を追加します。
http.cors.enabled: true
http.cors.allow-origin: "*"
4. アクセス エラー 406 を解決し
、コンテナ内の usr/src/app/_site/vendor.js ファイルを変更します。
行 6886 /contentType: "application/x-www-form-urlencoded は次のように変更されます:
contentType: "application/json;charset=UTF-8"
7573 行目 var InspectionData = s.contentType ==`= "application/x-www-form-urlencoded" &&` は次のように変更されます。
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
5. インジェストアタッチメントをインストールする
1. インストールパッケージをダウンロードする
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-7.12.1.zip
2.サーバーにアップロードする
アップロードしたディレクトリは usr/local/es/ingest-attachment-7.12.1.zip です。
3.コンテナ内にコピー
docker cp usr/local/es/ingest-attachment-7.12.1.zip 容器ID:/usr/share/elasticsearch
4. コンテナに入る
docker exec -it 容器ID/bin/bash
5. プラグインをインストールする
elasticsearch-plugin install file:/usr/share/elasticsearch/ingest-attachment-7.12.1.zip
以下のように、インストールが完了します。
6. コンテナを終了します
exit
7. elasticsearchを再起動します
docker restart 容器ID
この時点で、Elasticsearch、kibana、analytics-ik、elasticsearch-head、および ingest-attachment のインストールは完了です。