簡體   English   中英

Logstash / Kibana JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM