2019/02/05更新

[Docker] docker-composeでElasticSearchを起動し、データを永続化させる

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
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、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。