輪撥

2020年1月8日 星期三

Logstash 無法丟 log 到 Elasticsearch 解決 The [default] mapping cannot be updated on index 問題

從上一篇文章滾動式升級Rolling Upgrades Elasticsearch 到現在也一個月左右了,Chris 會將這段時間所遇到的 Elasticsearch 升版問題陸續 po上來,升版完後當下測試所有服務看起來都很正常,不過到了隔一天我就發現 Kibana 裡看不到任何的 Log,查看了所有 Elasticsearch 元件最後發現 Logstash 的 Event Log 出現大量 The [default] mapping cannot be updated on index ... defaults mappings are not useful anymore now that indices can have at most one type 的錯誤訊息。


原始訊息如下

[2019-12-10T14:28:15,007][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"logstash-2019.12.10", :_type=>"doc", :_routing=>nil}, #<LogStash::Event:0x51 212471>], :response=>{"index"=>{"_index"=>"logstash-2019.12.10", "_type"=>"doc", "_id"=>nil, "status"=>400, "error"=>{"type"=>"illegal_argument_exception", "reason"=>"The [default] mapping cannot be updated on index [logstash-2019.12.10] : defaults mappings are not useful anymore now that indices can have at most one type."}}}}

於是上網 Google 了一下,發現 elastic 論壇中別人也有遇到跟我一樣的問題,而解決方案其實很簡單就是刪除舊的 Template 並重新啟動 Logstash 即可。

https://discuss.elastic.co/t/logstash-could-not-index-event-to-elasticsearch-the-default-mapping-cannot-be-updated-on-index/177315/3

刪除 Template 的方法

在 Head 套件中網址輸入 http://192.168.1.2:9200/_template/logstash/ 方法選擇 DELETE

或是直接在 Elasticsearch 主機上下指令

# curl -XDELETE http://192.168.1.2:9200/_template/logstash

IP記得改成你 Elasticsearch 主機的 IP 喔,將舊的 Template 刪除並重啟 Logstash 後回到 Kibana 就可以發現 Log 有正常收進來了。

沒有留言:

張貼留言

網頁