2017-01-24 14 views
0

私はlogstashをinput-elasticsearchおよびoutput-elasticsearchとともに使用しています。両方のElastic Searchは異なるインスタンスを持っています。 データが出力ブロックに送られる前に、いくつかのドキュメントを集約し、新しいドキュメントのハッシュを作成し、ネストされたドキュメントを弾性検索に挿入したいとします。 基本的には、ネストされたドキュメントがelasticsearchに挿入される前に、いくつかの処理を行いたいと思っています。これは可能ですか?私が「集約」プラグインを使用していLogstash-ElasticSearchでの集約

input{ 
    # something here to get a value of variable stored in a different file 
    elasticsearch{ 
    hosts=>"abc.de.fg.hi:jklm" 
    query=>'{--some query---}' 
    } 
    } 
    output{ 

    elasticsearch{ 
    hosts=>"xxx.xx.xx.xx:yyyy" 

    } 
+0

残念ながら、現在のところ、Logstash内から集計を実行する方法はありません。それが価値があるのは、これをやっているプラ​​グインですが、まだリリースしていません。私は何かが動いたらこのスレッドを更新します。その間に、['aggregate'フィルタ](https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html)を調べてみるといいかもしれません。 – Val

+0

ニュースアグリゲーションの使い方 – hudi

答えて

2

。私の場合は

入力はUDPからのものであり、私はそれをフィルタリングする「完全に理解」が、私はあなたがで何をしたいかを達成できると信じてコードを微調整する。呪いの

aggregate { 
    task_id => “%{action}_%{progress}” 
    code => 
    “ 
    map[‘avg’] || = 0; 
    map[‘avg’] += event.get(‘elapsed’); 
    map[‘my_count’] || = 0; 
    map[‘my_count’] += 1; 

    if (map[‘my_count’] == ${LogstashAggregationCount})#Environment variable 
     event.set(‘elapsedAvg’, (map[‘avg’]/map[‘my_count’])) 
     event.set(‘Aggregetion’, true) 
     map[‘avg’] = 0 
     map[‘my_count’] = 0 
    end 
    “ 
}  
if (![Aggregetion]) { 
    drop {} 
} 

あなたの特定のケースにそれを適応する必要があります:あなたのサンプルがなければ

が正確に達成しようとしている、私ができる最善のこれはあなたに私のコードのサンプルを示しています。私のコードの詳細については、ここをクリックしてください:How to Use Logstash Aggregations