将文档从Elasticsearch传输到Elasticsearch

首先

    Logstash を使って Elasticsearch から Elasticsearch へドキュメントを転送する。

“Logstash 是什么” (Logstash is what)

    • Logstash はデータ処理エージェントで、データを収集して加工して送信することができる。

 

    fluentd とかと同じような役割の製品で Elastic 社製。

Logstash 配置

# ログの読み込み先の設定
input {
  # Elasticsearch から読み込む
  Elasticsearch {
    # 読み込み先のサーバー
    hosts => [ "from.example.com" ]
    # 読み込み先のインデックス
    index => "logstash-*"
    # Elasticsearch の Scroll API のタイムアウト時間
    # Scroll API はデータを抜け漏れなく取得するための API で、初回リクエスト時に結果を全件スナップショットとして保存しておき、次回以降はそのスナップショットから順次ドキュメントを返していく
    # Scroll API への 2 回目以降のリクエストには新たに追加されたドキュメントは反映されないのでリアルタイムの要求ではなく大量のデータを処理する場合などに利用できる
    # デフォルトは "1m" で 1 分過ぎたらスナップショットが破棄され新たな検索として扱われる
    scroll => "10m"
    # メタデータも読み込むかどうかフラグ
    docinfo => true
    # 読み込みクエリ
    query => '{ "query": { "query_string": { "query": "*" } }, "sort": [ "_doc" ] }'
    # 実行スケジュール. crontab 形式で指定する.
    # これを指定しない場合は 1 度読み込みと書き込みを実行しただけですぐに終了する
    schedule => "* * * * *"
  }
}
# ログの書き込み先の設定
output {
  # Elasticsearch へ書き込む
  Elasticsearch {
    # 書き込み先サーバー
    hosts => [ "to.example.com" ]
    # 書き込み先インデックス
    # 読み込んだメタデータを使って指定できる
    index => "%{[@metadata][_index]}"
    # 書き込む際の document_id
    # これも読み込んだメタデータを使って指定できる
    document_id => "%{[@metadata][_id]}"
  }
}

执行Logstash

    • java が入っていれば基本的に logstash ダウンロードして設定ファイル指定して実行するだけ

 

    RPM とか Docker イメージもあるので詳細は公式を参照
curl https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.zip -o logstash-6.2.3.zip
unzip logstash-6.2.3.zip
bin/logstash -f logstash.conf
广告
将在 10 秒后关闭
bannerAds