Нет обработчика для типа [string], объявленного в поле [fieldname] - PullRequest
0 голосов
/ 09 марта 2020

Я знаю, что этот вопрос задавался ранее, но я не могу заставить его работать.

Я обновил 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 ",
...