【问题标题】:Add fields to Logstash Twitter input and Elasticsearch output向 Logstash Twitter 输入和 Elasticsearch 输出添加字段
【发布时间】:2015-05-09 02:55:59
【问题描述】:

我正在使用 logstash 将 twitter 流保存到 elasticsearch。在保存之前,我想

  1. 添加一个新字段,指示推文是 RT、回复还是自然推文
  2. 使用 tweet id 作为 elasticsearch 的文档 id

但我也做不到! Logstash 配置文件:

input {
twitter {
    oauth_token => ""
    oauth_token_secret => ""
    consumer_key => ""
    consumer_secret => ""
    full_tweet => true
    keywords => ["test"]
}
}

filter {
ruby {
    code => "
        if !event['retweeted_status'].nil?
            event['tweet_type'] = 'Retweet'
        elsif !event['in_reply_to_screen_name'].nil?
            event['tweet_type'] = 'Reply'
        else
            event['tweet_type'] = 'Organic'
        end
    "
}
}

output {
elasticsearch {
    document_id => [id]
    index_type => "twitter"
    protocol => "http"
    bind_host => "127.0.0.1"
}
}

我做错了什么?

【问题讨论】:

    标签: ruby twitter elasticsearch logstash


    【解决方案1】:

    您无需使用 ruby​​ 来测试字段。试试:

    if [retweeted_status] {
        mutate {
           add_field => { "tweet_type", "Retweet" }
        }
    }
    

    (注意:这是伪代码;我可能把 {s 和 => 弄错了)。

    至于使用文档id,试试:

    document_id => "%{id}"
    

    【讨论】:

    • 不。两者都不起作用。正确的语法是add_field => { "tweet_type" => "Retweet" },但它不起作用。 document_id 字面上变成了“%{id}”
    • 请更具体地说明“不起作用”。发生什么了?使用正确的语法,它看起来很好。查看代码 document_id 分配也应该有效。 twitter 输入产生的消息实际上是什么样的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多