Уффф... Наконец-то разобрался
Стало сплитится и все как надо выводить с таким вот конфигом:
input {
http_poller {
urls => {
test => {
method => get
url => "https://plesk.uservoice.com/api/v1/forums/184549/suggestions?sort=newest"
headers => {
Accept => "application/json"
Authorization => "Bearer xxxxxxxxx"
}
}
}
request_timeout => 60
schedule => { every => "1h"}
codec => "json"
}
}
filter {
# Split suggestions into records
split {
field => "[suggestions]"
}
# Extract fields that we care about and delete the rest
mutate {
add_field => {"id" => "%{[suggestions][id]}"}
add_field => {"title" => "%{[suggestions][title]}"}
add_field => {"text" => "%{[suggestions][text]}"}
add_field => {"created_at" => "%{[suggestions][created_at]}"}
add_field => {"status" => "%{[suggestions][status][name]}"}
add_field => {"category" => "%{[suggestions][category][name]}"}
add_field => {"supporters_count" => "%{[suggestions][supporters_count]}"}
remove_field => "suggestions"
remove_field => "response_data"
}
}
Но возникли еще вопросы. Поможете, если я Вам еще не надоел?
-
Вывод выглядит вот так:
{
"status" => "open discussion",
"@timestamp" => 2018-03-16T06:39:43.150Z,
"created_at" => "2018/03/11 16:50:13 +0000",
"category" => "Backup / Restore",
"id" => "33599668",
"supporters_count" => "1",
"@version" => "1",
"text" => "Please enter the percentage of database restore in progress ... it is very frustrating to restore without knowing either the time left or the totality of kbytes transferred and remaining, with progress a bar \nThank you",
"title" => "backup"
}
проблема в том, что вместо "@timestamp" мне нужно использовать "created_at". Но это поле идет в индекс как текст, а не как дата.
-
В соответствии с полем schedule выборка происходит каждый час. Хотелось бы, чтобы в тех записях в индеске ElasticSearch, которые уже существуют, обновлялись измененные поля, и добавлялись новые записи, которые появились за прошедший час.
-
Хотелось бы как-то из поля "text" вырезать все URLs и emails, и кроме того, переводить весь текст в lowercase.