2017-05-03 37 views
2

ログに次の情報があります。これはJSON形式です。Logstash文字列から値の配列を作成します。

{ 
    "someField":"someValue", 
    "columns":"[colName1, colName2, colName3, ... colNameN]", 
    "someField":"someValue" 
} 

私はこれが同じフィールドcolumnsで配列として格納したいです。

私が見たいユースケースは、特定のカラムを使用したユーザの数とその数です。

私はあなたを助けるかもしれないoutput.confにELK stak 5.x

答えて

1

に変換されます私は両方を参照することにより溶液を得ました上記の答え。 これは私がやったことです。

mutate { 
     gsub => ["columns", "[\[\]]", ""] 
    } 

、その後の配列に変換するために:私はこれを使用した文字列から[]を削除するには

mutate { 
     split => { "columns" => "," } 
    } 
1

に変異を使用しています。 https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace

配列に文字列から直接変換がサポートされていませんが -

は、このリンクに従ってください。私は同じユースケースに直面し、そのためにマージ機能を使用しました。私はいくつかのダミーフィールドを持って、新しい配列フィールドを作成するために 'カラム'フィールドとマージすることをお勧めします。お役に立てれば。

2

あなたのソースは、直接JSON形式であれば

JSONプラグイン

filter { 
    json { 
    source => "message" 
    } 
} 

を使用して、配列フィールドは、自動配列

https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html

+0

私は、それが配列への自動変換されることを理解しています。私の場合は、ThreadContextを使って値を入れています。 ThreadContextは 'String'値のみをサポートします。私の値は配列形式で表示されますが、実際には文字列形式でログファイルに書き出されます。この場合、それで親友になるのだろうか? –

+0

ThreadContextはlogstashプラグインですか?そうでない場合は、あなたが提供するJSON形式は、デフォルトではメッセージフィールドから来るはずですので、私はあなたがThreadContextを意味するのかわかりません –

+0

Logstashプラグインではありませんが、フィールドに値を入れて、向こうに。 –

関連する問題