![](/img/trans.png)
[英]Import JSON Files into Logstash + Elasticsearch + Kibana
[英]Logstash/Kibana JSON
我正在嘗試使用Logstash提取JSON日志並使用Kibana查詢它們。 我有一個logstash conf文件,如下所示:
input {
file {
codec => "json"
type => json
path => "/vagrant/all-subset.json"
start_position => beginning
}
}
filter{
json{
remove_field => ["type"]
source => "message"
target => "tweet"
}
}
output {
elasticsearch {
index => subset7
host => localhost
index_type => test
}
stdout { codec => rubydebug }
}
我可以看到所有日志都已被提取,並且如果我在ES上進行搜索,則會看到類似以下內容:
{
"took" : 17,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 682,
"max_score" : 1.0,
"hits" : [ {
"_index" : "subset7",
"_type" : "test",
"_id" : "syb0ETOXT3GddLY20xejBw",
"_score" : 1.0,
"_source":{"a": 1, "b": 2, "type": "one"}
}, {
如您所見,該消息位於_source字段中。 ES 不會對此進行索引 。 如何索引郵件的內容?
我認為您的代碼段無法證明未對字段進行索引。 同樣,您指向_source的鏈接表示_source字段未編制索引; 這是正確的,但是從_source讀取后,其中的元素應該單獨存儲,以便可以對其進行索引。
檢查索引的映射:curl -XGET http:// host:9200 / [maybe_index] / _mapping
如果沒有出現這些字段,請檢查您是否具有動態映射設置。 如果不是,也許考慮使用它? https://www.elastic.co/guide/zh-CN/elasticsearch/reference/1.5/mapping-dynamic-mapping.html
另外,在Kibana 4中,您可能需要在設置> [您的索引]>重新加載按鈕中更新索引
這將明顯地獲取新映射的字段。
確定是否要映射字段的一種更好的方法是使用存在過濾器進行查詢(必須至少有一個文檔,該字段包含非空值):
{
"query" : {
"filtered": {
"filter": {
"exists": {
"field": "whatever_field_name_from_json"
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.