Я знаю, что этот вопрос задавался ранее, но я не могу заставить его работать.
Я обновил Kibana и ElasticSearch с 5.6.16 до 6.8.7, и после обновления все продолжало работать , Однако через два дня в полночь все журналы прекратились, и в журналах стали появляться следующие ошибки:
[2020-03-09T10:35:09,326][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"logstash-prod-syslog-2020.11", :_type=>"syslog", :_routing=>nil}, LOGLINE, :response=>{"index"=>{"_index"=>"logstash-prod-syslog-2020.11", "_type"=>"syslog", "_id"=>nil, "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"Failed to parse mapping [_default_]: No handler for type [string] declared on field [@version]", "caused_by"=>{"type"=>"mapper_parsing_exception", "reason"=>"No handler for type [string] declared on field [@version]"}}}}}
При просмотре предыдущих сообщений я предположил, что ошибка заключается в том, что Поле @version
ранее имело тип string
и теперь должно иметь тип text
или keyword
. Однако при просмотре шаблонов (которые используются с 5.6.16) поле имеет тип keyword
:
"@version": { "type": "keyword", "index": true },
В шаблонах у меня есть несколько ссылок на string
такие как это:
"mappings" : {
"_default_" : {
"_all" : {"enabled" : false, "norms" : false},
"dynamic_templates" : [ {
"message_field" : {
"match" : "message",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text", "index" : true, "norms" : false
}
}
}, {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text", "index" : true, "norms" : false,
"fields" : {
"raw" : {"type": "keyword", "index" : true, "ignore_above" : 256}
}
Но если я пытаюсь обновить их до text
, я получаю следующую ошибку:
"No field type matched on [text], possible values are [object, string, long, double, boolean, date, binary]"
Я также посмотрел на мои шаблоны индекса (это Также стоит отметить, что упоминание индекса в сообщении об ошибке logstash-prod-syslog-2020.11
отсутствует в Кибане), и я вижу, что @version
указан в виде строки:
@version string
Единственное другое место, где я могу видеть @version
в списке в виде строки, - это запуск следующего GET в elasti c API:
/_template/logstash-prod
"@version": {
"index": "not_analyzed",
"type": "string"
Я попытался просто сделать PUT и изменив тип на text
, и я просто получаю ошибку:
"reason": "unknown key [logstash-prod] in the template ",