こんにちは、 @snuffkin です。
この記事は、Elastic stack Advent Calendar 2016の8日目です。
qiita.com
皆さんは、Elasticsearchのデータを、別のElasticsearchに入れたいことってありませんか?
私は実際に、
- 各自がアドホックに分析するため、個人用のElasticsearchを立てているので、そこにコピーしたい
- 遠隔地にあり、直接アクセスできないElasticsearchのデータを確認したい
ということをしたい場合があります。
今回は、このようなケースで使える方法をいくつか紹介します。
正攻法はsnapshot機能を利用することかもしれませんが、ちょっとしたコピーをしたいときには敷居が高いのではないかと思います。
ここでは、もう少し簡易に実行する方法を紹介します。
(方法1) Logstashでコピーする
まずは、
各自がアドホックに分析するため、個人用のElasticsearchを立てているので、そこにコピーしたい
のようなケースで使い勝手が良いコピー方法です。
コピー元とコピー先のElasticsearchが同一ネットワークにあることが前提になりますが、LogstashのElasticsearchプラグインを利用してコピーするのが便利です。
具体的な方法については、こちらを参考にすると良いと思います。
stackoverflow.com
(方法2) コピー元で取得したJSONをコピー先に入れる
次は、
遠隔地にあり、直接アクセスできないElasticsearchのデータを確認したい
のようなケースで使い勝手が良いコピー方法です。
遠隔地で別の人がKibanaを操作していて、見ているデータを自分でも確認したくなるケースがあります。
この場合、KibanaのDiscover機能でデータを取得し、コピー先に入れるのが便利です。
具体的には、次の方法でコピーすることができます。
コピー元でデータを取得する
まずは、コピー元でElasticsearchに入っているデータを次の手順で取得します。
1.メニューから「Discover」をクリックし、Discover画面を表示する
2.コピーしたい時刻に合わせ、グラフ左下の上矢印をクリックする
3.テーブルの上にある「Response」をクリックする
コピー先にデータを登録する
次に、コピー先のElasticsearchに入っているデータを登録します。
私はちょっとしたPythonスクリプトを使っています。
1.Pythonがインストールされていない場合は、以下のサイトからダウンロードし、インストールする
www.python.org
2.Python用Elasticsearchクライアントがインストールされていない場合は、インストールする
pip install elasticsearch
#!/usr/bin/env python # -*- coding: utf-8 -*- import json from elasticsearch import Elasticsearch es = Elasticsearch('192.168.0.1') file = open('Response.json', 'r') json_data = json.load(file) for data in json_data['hits']['hits']: es.index(index=data['_index'], doc_type=data['_type'], body=data['_source'], id=data['_id'])
※'192.168.0.1'のところには、コピー先のElasticsearchを指定してください。
これで、コピー先のElasticsearchにデータが入ります。
私の場合、遠隔地のデータを確認したいケースがあるため、これで重宝しています。
この方法が、同じような状況の方に役立てば幸いです。
Acroquest Technologyでは、キャリア採用を行っています。
- ビッグデータ(Hadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
- マイクロサービス、DevOpsなどの技術を使ったり、データ分析、機械学習などのスキルを活かしたい。
- 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
- 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
www.wantedly.com