[Docker] docker-composeでElasticSearchを起動し、データを永続化させる
こんにちは、@yoheiMuneです。
docker-composeを使うと開発環境をサクッと構築できて便利です。今日はdocker-composeでElasticSearchを使う方法をブログに書きたいと思います。
その後、以下のように起動します。
起動したら、先ほどと同じ検索をすると、データが返却される(=再起動でデータが消えていない)ことを確認できます。
最後になりますが本ブログでは、インフラ、サーバー、PHP、Swift、フロントエンド、Python、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
docker-composeを使うと開発環境をサクッと構築できて便利です。今日はdocker-composeでElasticSearchを使う方法をブログに書きたいと思います。
目次
docker-composeでElasticSearchを起動する
docker-composeでElastic Searchを導入するには、まず以下のファイルを作成します。
version: '3.3'
services:
# elastic search.
es:
image: elasticsearch:6.5.0
ports:
- "9200:9200"
Dockerで利用可能なElasticSearchのバージョンはelasticsearch - dockerhubにて確認できます。また、docker-composeのversionについては、Compose file versions and upgradingより確認できます。その後、以下のように起動します。
$ docker-compose up起動が終わると、以下でアクセスできます。
$ curl localhost:9200
{
"name" : "9cRm-CK",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "Wp9InU_2SXKHe-3AaZTL5g",
"version" : {
"number" : "6.5.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "816e6f6",
"build_date" : "2018-11-09T18:58:36.352602Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
動作確認ができたら、後続の作業のため「Ctrl+C」を押して、起動を停止しておきます。データを永続化する
以下の手順で、永続化の設定と動作テストを行います。永続化の設定を追加
上記設定の場合、Dockerを停止すると、ElasticSearchのデータも消えてしまいます。永続化するためにはvolumes設定を追加します。
version: '3.3'
services:
# elastic search.
es:
image: elasticsearch:6.5.0
ports:
- "9200:9200"
volumes:
- es-data:/usr/share/elasticsearch/data
volumes:
es-data:
driver: local
docker-composeで起動
記述を追加したら起動します。$ docker-compose up別ターミナルを開き、以下のコマンドを実行すると、新しくボリュームが作成されたことが確認できます。
$ docker volume ls docker volume ls DRIVER VOLUME NAME local mywork_es-data
テスト用にデータを追加
ここで、1件データを追加してみます。
$ curl -XPOST -H 'Content-Type: application/json' http://localhost:9200/my_index/user -d '{"name":"Yohei"}'
{"_index":"my_index","_type":"user","_id":"3VRTuWgBJAPj6DBg009Z","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
検索すると、追加した内容を確認できます。
$ curl localhost:9200/my_index/user/_search?pretty
{
"took" : 14,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [
{
"_index" : "my_index",
"_type" : "user",
"_id" : "3VRTuWgBJAPj6DBg009Z",
"_score" : 1.0,
"_source" : {
"name" : "Yohei"
}
}
]
}
}
docker-composeの再起動して、データが残っていることを確認
「Ctrl+C」でdocker-composeを停止し、その後に再度docker-compose upで起動します。起動したら、先ほどと同じ検索をすると、データが返却される(=再起動でデータが消えていない)ことを確認できます。
$ curl localhost:9200/my_index/user/_search?pretty # 結果があり、再起動前と同じものが表示される.これで永続化の対応ができました。
最後に
Dockerやdocker-composeは非常に便利だし、よく使われているので、ぜひキャッチアップしたいなと思う今日この頃です。頑張ろうっと。最後になりますが本ブログでは、インフラ、サーバー、PHP、Swift、フロントエンド、Python、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!


