Elasticsearchの概要
Elasticsearchとは
Elasticsearch(以下ES)は、オープンソースのフルテキスト検索エンジンサーバーで、ほぼリアルタイムにデータの保存・検索が可能です。数百台のサーバーにスケールしてPB単位のデータを処理できる拡張性が特徴です。Javaで開発され、Luceneをコアとしてインデックス作成と検索機能を実装していますが、Restful APIやJava APIを通じてLuceneの複雑さを隠蔽し、全文検索を簡易化しています。
公式サイト:https://www.elastic.co/cn/products/elasticsearch
企業での利用シーン
企業での利用は主に以下の2つのケースに分類されます:
1)既存システムの検索モジュールがデータベース検索で実装されており、パフォーマンス問題や関連度順位の要件に応じて全文検索への移行が必要な場合。この場合の業務フローは以下の図を参照してください。
2)新規モジュールの開発段階で、からだいの関連度順位や全文検索機能が必要な場合。この場合の業務フローは以下の図を参照してください。
インデックスライブラリに保存するデータ
インデックスライブラリは検索用にデータを保存しますが、データベースとは必ずしも完全に一致しません。保存するデータは、ビジネス要件に基づいて、表示するフィールドや検索対象のフィールドを決定した上で保存されます。
バージョン情報
現在最新版は7.3.2ですが、本記事では6.8.0を使用し、JDK1.8以上を推奨します。
Elasticsearchのインストールと設定
本記事ではLinux環境でのインストール手順を解説します。
環境要件
- CentOS 7 (64bit)
- JDK8以上
ユーザー作成
セキュリティの観点から、Elasticsearchはrootユーザーでの起動を禁止しています。
useradd elastic
passwd elastic
su - elastic
インストールファイルのアップロードと解凍
インストールファイルを/home/elasticディレクトリにアップロードします。
tar xvf elasticsearch-6.8.0.tar.gz
mv elasticsearch-6.8.0/ elasticsearch
cd elasticsearch
ls
- bin: バイナリスクリプト
- config: 設定ファイル
- lib: 依存ライブラリ
- logs: ログファイル
- modules: モジュール
- plugins: プラグイン(例: IK分詞プラグイン)
- data: データストレージ(設定ファイルで指定)
設定ファイルの変更
configディレクトリに移動します。
cd config
ll
変更が必要な設定ファイルは以下の2つです。
JVM設定の変更
vim jvm.options
デフォルト設定:
-Xms1g
-Xmx1g
仮想マシンのメモリが2GBの場合、以下のように変更します。
-Xms256m
-Xmx256m
elasticsearch.ymlの変更
vim elasticsearch.yml
データとログディレクトリの設定:
path.data: /home/elastic/elasticsearch/data
path.logs: /home/elastic/elasticsearch/logs
IPバインド設定:
network.host: 0.0.0.0
起動手順
cd bin
./elasticsearch
エラー修正
エラー1: ファイルディスクリプタ数不足
vim /etc/security/limits.conf
追加内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
エラー2: メモリマップカウント不足
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
プラグインのインストール
bin/elasticsearch-plugin install analysis-icu
bin/elasticsearch-plugin list
GET http://localhost:9200/_cat/plugins?v
Kibanaのインストール
tar -xvf kibana-6.8.0-linux-x86_64.tar.gz
mv kibana-6.8.0-linux-x86_64 kibana
設定ファイル変更:
cd kibana/config
vim kibana.yml
server.host: "0.0.0.0"
i18n.locale: "zh-CN"
起動:
./elasticsearch
./kibana
アクセスURL:
http://192.168.163.129:5601
IK分詞プラグインの導入
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.0/elasticsearch-analysis-ik-6.8.0.zip
テスト
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京市长江大桥"
}
拡張辞書の追加
vim myext_dict.dic
江大桥
関連リンク