Elasticsearch のインストール(すでにインストール済みの場合は飛ばす)
Docker を使用して Elasticsearch をインストールするには、次のコマンドを実行します。
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.13
ブラウザでアクセスし、正常に表示される場合、インストールが成功しています。
分詞ツールのインストール
公式サイト
方法1 圧縮ファイルをダウンロードしてインストール
ダウンロード先:https://github.com/medcl/elasticsearch-analysis-ik/releases
ダウンロード後、ホストマシンの指定された場所にアップロードします。例:/home/infoadmin/elasticsearch-analysis-ik-6.8.13.zip
次のコマンドでホストマシンのファイルをコンテナ内にコピーします:
docker cp /home/infoadmin/elasticsearch-analysis-ik-6.8.13.zip elasticsearch:/usr/share/elasticsearch/plugins/ik
コンテナにアクセスします:
docker exec -it elasticsearch bash
解凍します:
cd /usr/share/elasticsearch/plugins/ik/ && unzip elasticsearch-analysis-ik-6.8.13.zip
解凍後は再起動不要です。
方法2 インターネット経由でインストール
コンテナにアクセスした後、次のコマンドを入力します:
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.13/elasticsearch-analysis-ik-6.8.13.zip
注意:インターネット経由でのインストールはバージョン5.5.1以上でサポートされています。
コンテナで実行するとエラーが発生しました。ネットワーク問題のようですが、詳細な調査は行っていません。圧縮ファイルを使用する方法を推奨します。
テストの検証
コマンドラインから「fenci」という名前のマップデータを追加します:
curl -XPOST http://you_url:9200/index/fenci -H 'Content-Type:application/json' -d'
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}'
コマンドラインから2つのテストデータを追加します:
curl -XPOST http://you_url:9200/index/fenci/1 -H 'Content-Type:application/json' -d'
{"content":"米国がイラクに残したのは破綻した状況ですか"}
'
curl -XPOST http://you_url:9200/index/fenci/3 -H 'Content-Type:application/json' -d'
{"content":"韓国と中国の漁船警備隊の対立:韓国の警察は毎日平均1隻の中国漁船を差し止めています"}
'
コマンドラインから「国」字が出現する回数を検索します:
curl -XPOST http://you_url:9200/index/_search -H 'Content-Type:application/json' -d'
{
"query" : { "match" : { "content" : "国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}'
実行結果: