2014-02-25 36 views
2

我發送json消息到logstash獲取索引elasticsearch並設法在Kibana中設置UI儀表板。我想通過消息字段來過濾數據,但無法弄清楚如何或在哪裏做到這一點。我的消息的例子:elasticsearch消息字段值

{"message":"{"pubDate":"2014-02-25T13:09:14", 
"scrapeDate":"2014-02-5T13:09:26", 
"Id":"78967", 
"query":"samsung S5", 
"lang":"en"} 

現在它計算所有這些消息進來的,但我需要得到由場本身例如像Idlangquery過濾每條消息。 這是必須在配置文件中完成還是可以在Kibana界面中創建。

回答

3

首先,我想你的JSON消息是

{ 
    "pubDate":"2014-02-25T13:09:14", 
    "scrapeDate":"2014-02-5T13:09:26", 
    "Id":"78967", 
    "query":"samsung S5", 
    "lang":"en" 
} 

當您發送郵件到logstash,你需要指定的編解碼器,以JSON。正如顯示在下面的配置:

input { 
    stdin { 
      codec => json 
    } 
} 

output { 
    elasticsearch { 
      cluster => "abc" 
    } 
} 

Logstash將解析郵件到不同的領域,如輸出:

{ 
    "pubDate" => "2014-02-25T13:09:14", 
"scrapeDate" => "2014-02-5T13:09:26", 
     "Id" => "78967", 
    "query" => "samsung S5", 
     "lang" => "en", 
    "@version" => "1", 
"@timestamp" => "2014-02-26T01:36:15.336Z", 
     "host" => "AAAAAAAAAA" 
} 

當你表現出Kibana這個數據,你可以用字段名:值查詢並過濾你需要的東西。例如,您可以使用lang:en查詢所有消息。

+0

感謝您的回覆。欣賞它。我按照你的建議更改了配置文件,但沒有看到任何數據。如果你不介意的話,我會解決一個問題。存儲日誌消息的位置,以便在目錄太滿時清理該目錄。 – vbNewbie

+0

也將該conf文件沒有tcp而不是stdin權利? – vbNewbie

+0

想通了; tcp {codec =>「json_lines」} – vbNewbie