Hello everyone and thanks for passing by !
I'm actually trying to import data into Elasticsearch (with ELK stack) from a view in a dockerized mysql with Logstash but i'm failing miserably for some weeks now as i'm a complete beginner in all these ELK things. I can't find where's my mistake and how to solve this error.
(For the sake of readability, i cut down some fields in the request)
Could not index event to Elasticsearch.
{:status=>400, :action=>["index", {:_id=>nil, :_index=>"announces_brands_profils_exclusions", :routing=>nil}, {"customersegment_age_classe"=>"[{\"ageclasse_id\": 1, \"ageclasse_label\": \”abcde\”, \"ageclasse_category\": \"brand_customer_segment.age_classe\"}, {\"ageclasse_id\": 2, \"ageclasse_label\": \”fghij\”, \"ageclasse_category\": \"brand_customer_segment.age_classe\"}
]", "announce_mechanism"=>”this is mecanism”, "profil_updated_at"=>"2020-11-21”, "announce_title"=>"will to trade", "@timestamp"=>2021-11-17T09:21:02.187Z, "customersegment_csp"=>"[{\"csp_id\": 56, \"csp_label\": \"Non pertinent\", \"social_category\": \"brand_customer_segment.csp\”}]”,” is_premium"=>0}], :response=>{"index"=>{"_index"=>"announces_brands_profils_exclusions", "_type"=>"_doc", "_id"=>"j44zLX0BqQzOPA_sFbx-", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"object mapping for [customersegment_age_classe] tried to parse field [customersegment_age_classe] as object, but found a concrete value"}}}}
Here's my logstash conf
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://mysql:3306/CONNECTION_STRING"
jdbc_user => "USER"
jdbc_password => "PASSWORD"
jdbc_driver_library => "/usr/share/logstash/jarfile/mysql-connector-java-8.0.26.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
schedule => "* * * * *"
statement => "SELECT * FROM VIEW_IN_QUESTION"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "announces_brands_profils_exclusions"
user => "USER"
password => "PASSWORD"
ecs_compatibility => disabled
template => "path_to_template.json"
}
}
And finally, here's the template.json
{
"settings": {},
"mappings": {
"properties": {
"announce_mechanism": {
"type": "keyword"
},
"announce_title": {
"type": "text"
},
"customersegment_age_classe": {
"type": "nested",
"dynamic": "true"
},
"profil_updated_at": {
"type": "date"
},
"customersegment_csp": {
"type": "nested",
"dynamic": "true"
}
}
},
"aliases": {}
}
I'd appreciate any help and stay available if you need any more informations !
Thanks and have a great day !