2016-08-12 4 views
1

logstashへの入力は大きな弾性の検索インデックスに大きなjsonファイルの入力を分割する方法は?

input { 
    file { 
     path => "/tmp/very-large.json" 
     type => "json" 
     start_position => "beginning" 
     sincedb_path => "/dev/null" 
    } 

とサンプルJSONファイル

{"type":"type1", "msg":"..."} 
{"type":"type2", "msg":"..."} 
{"type":"type1", "msg":"..."} 
{"type":"type3", "msg":"..."} 

は彼らが異なる弾性検索インデックスに供給作ることが可能ですので、私は将来的には簡単にそれらを処理することができますか?

私はそれがtagでそれらを割り当てることが可能であるならば、私は

例えば、特定のJSONフィールドの値を見て、同じようなことを行うにはどのように
if "type1" in [tags] { 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     action => "index" 
     index => "logstash-type1%{+YYYY.MM.dd}" 
     flush_size => 50 
    } 
} 

ような何かを行うことができます知っています上記の例でtype

+0

答えが正しいですが、あくまでも参考のために、あなたができますdo:if [type] == "type1" – pandaadb

答えて

1

さらに簡単、ちょうどこのようにインデックス名を構築するためにtypeフィールドを使用します。

elasticsearch { 
    hosts => ["localhost:9200"] 
    action => "index" 
    index => "logstash-%{type}%{+YYYY.MM.dd}" 
    flush_size => 50 
} 
0

あなたはすべてのフィールドに比較することができます。最初にjson filterまたはcodecでjsonを解析する必要があります。

次に、あなたはこのように、作業するtypeフィールドがあるでしょう:ヴァルの答えで

if [type] == "type1" { 
    elasticsearch { 
     ... 
     index => "logstash-type1%{+YYYY.MM.dd}" 
    } 
} else if [type] == "type2" { 
    elasticsearch { 
     ... 
     index => "logstash-type2%{+YYYY.MM.dd}" 
    } 
} ... 

など:

elasticsearch { 
    hosts => ["localhost:9200"] 
    action => "index" 
    index => "logstash-%{type}%{+YYYY.MM.dd}" 
    flush_size => 50 
} 
関連する問題