Кодек Json не отправляет данные вasticsearch - PullRequest
0 голосов
/ 19 октября 2018

INPUT: json

{"userid": 125,"type": "SELL"}
{"userid": 127,"type": "SELL"}

LOGSTASH CONF FILE:

input {
kafka {
bootstrap_servers => ""
topics => ["topic1"]
codec => "json"
}
}
output {
amazon_es {
hosts => [""]
region => ""
aws_access_key_id => ''
aws_secret_access_key => ''
index => "indexname"
}

stdout { codec => rubydebug }
}

вывод stdout:

{
"userid" => 127,
"@version" => "1",
"@timestamp" => 2018-10-18T13:54:37.641Z,
"type" => "SELL"
}

Вывод выглядит точно так, как я хочу.Но это просто не пойдет в тему эластичного поиска.Если я не использую фильтр json, весь json отправляется в ES как «message».

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Я понял проблему.Я использовал поле с именем type в данных моего файла json, которое вызывало проблему.logstash хранит его как _type в ES, что больше не разрешено в более новых версияхasticsearch.И именно поэтому, если бы мой тип был «ПОКУПАТЬ», он принял бы запись, а если бы это был «ПРОДАЖА», то отклонил бы ее.Спасибо за помощь!

0 голосов
/ 19 октября 2018

Вы пытались использовать фильтр JSON?

input {
    kafka {
        bootstrap_servers => ""
        topics => ["topic1"]
    }
}

filter {
    json {
        source => "message"
    }
}
output {
    amazon_es {
        hosts => [""]
        region => ""
        aws_access_key_id => ''
        aws_secret_access_key => ''
        index => "indexname",
        custom_headers => {'Content-Type': 'application/json'}
    }

    stdout { codec => rubydebug }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...