2017-11-05 10 views
0

フィールドaccount_id(リレーショナルデータベースのプライマリキー)とステータスを持つドキュメントがあります。アカウントのステータスに変更があるたびに、イベントをElasticSearchにプッシュしました。木場:フィールドのtop_hitsの数を表示するテーブルを作成する方法

ある期間にわたって、ステータスの異なるアカウントの複数のドキュメントがあります。

私の要件は、各account_idの最近の文書を取得し、ステータスを数えることです。

SQLに相当する「ステータス別に選択したステータス、カウント(*)」、

例:次のログ

account_id: 1, status:delete, @timestamp: November 4th 2017, 18:42:09.445 
account_id: 1, status:save, @timestamp: November 3rd 2017, 18:42:09.445 
account_id: 1, status:draft, @timestamp: November 2nd 2017, 19:42:09.445 

account_id: 2, status:draft, @timestamp: November 3rd 2017, 19:42:09.445 

account_id: 3, status:save, @timestamp: November 4th 2017, 18:42:09.445 
account_id: 3, status:draft, @timestamp: November 3rd 2017, 19:42:09.445 

を検討し、出力は次のようになります。

**status** **count** 
delete 1 
save  1 
draft 1 

ELK:5.6

答えて

0

この機能は、私たちが待って停止し、少なくとも2013年以来Kibanaで要求されています、それを行うことができるグラフナを使用しています。すべてのgithubの参照に従うことができれば、それは弾性のように見えるかもしれませんdo it nowへの道があります。

0

現時点では回避策として、同じログメッセージを2つのインデックスにプッシュするようにlogstash.confを更新しました。最初のインデックスでは、常に新しいレコードを作成し、2番目のインデックスではレコードを作成/更新します。

logstash.conf

output { 
    if [index_name] == "Account" { 
    elasticsearch { 
    hosts => ["IP:PORT"] 
    index => "account" 
    } 
} 
stdout { codec => rubydebug } 
} 
output { 
if [index_name] == "Account" { 
elasticsearch { 
hosts => ["IP:PORT"] 
index => "account_latest" 
document_id => "%{field_id}" 
} 
} 
stdout { codec => rubydebug } 
} 
のスニペット
関連する問題