インフラ

ElasticSearchのインストール/設定/運用

更新日

公式サイト

https://github.com/elastic/elasticsearch

インストール

参照
https://www.elastic.co/guide/en/elasticsearch/reference/7.8/rpm.html#rpm-repo

CentOS系の場合
/etc/yum.repos.d/elasticsearch.repo を以下の中身で作成

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
yes | sudo dnf install --enablerepo=elasticsearch elasticsearch
sudo systemctl daemon-reload;
sudo systemctl enable elasticsearch.service;
sudo systemctl start elasticsearch.service;

Job for elasticsearch.service failed because a timeout was exceeded.
というメッセージが出て、タイムアウトで起動に失敗してしまったらタイムアウトの秒数を伸ばしてみる。

sudo systemctl show elasticsearch | grep ^Timeout;
sudo mkdir /etc/systemd/system/elasticsearch.service.d;
echo -e "[Service]\nTimeoutStartSec=300" | sudo tee /etc/systemd/system/elasticsearch.service.d/startup-timeout.conf;
sudo systemctl daemon-reload;
sudo systemctl show elasticsearch | grep ^Timeout;
sudo systemctl start elasticsearch;

但し、そうはいっても立ち上げに時間がかかりすぎる事自体、適切な事ではなく、これで解決する場合には、メモリ不足が理由の可能性がある。
topコマンドを打つと、swap領域を使っている状態になっていたりする。
ElasticSearchは最低1GBは使う設定になっているので、サーバー全体としてはメモリは最低1.5GB以上なければ、そうした状態になってもおかしくない。

なお、このままだと、英語の検索は出来るが、日本語の検索に問題があるので、日本語対応をする。

cd /usr/share/elasticsearch/bin;
sudo ./elasticsearch-plugin install analysis-kuromoji;
sudo ./elasticsearch-plugin install analysis-icu;
sudo systemctl restart elasticsearch;

ElasticSearchの中身のVisualizeツールKibanaのインストール・設定

dockerでインストールした場合には、通常
http://localhost:5601
で動いている