Existing mapping for [postfix] must be of type object but found [boolean]

Всем привет.

Поднял с нуля ELK.
Настроил его на мониторинг
В /etc/logstash/conf.d/postfix.conf
http://pastebin.calculate-linux.ru/ru/show/127900
В /etc/logstash/patterns/postfix
http://pastebin.calculate-linux.ru/ru/show/127901
Но в логах logstash

Blockquote

[2019-10-14T10:39:13,494][WARN ][logstash.outputs.elasticsearch][main] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"postfix10-2019.10.14", :_type=>"_doc", :routing=>nil}, #LogStash::Event:0x65c32d89], :response=>{"index"=>{"_index"=>"postfix10-2019.10.14", "_type"=>"_doc", "_id"=>"MBm1ym0Br-QV79CHeMxH", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"Could not dynamically add mapping for field [postfix.client_ip]. Existing mapping for [postfix] must be of type object but found [boolean]."}}}}

Как починить это ?

Эта ошибка означает, что когда у вас была добавлена запись, которая выглядела как-то так:

{
...
  "postfix": false
...
}

или тоже самое с true. В результате, elasticsearch ждет что в этом поле прибудет boolean, а прибывает объект. Надо удалить индекс и начать заново, убедившись, что посылаются данные правильного формата ю

Спасибо.

У меня в filebeat так:

filebeat.inputs:
- type: log
  enabled: true
  paths:
      - /var/log/maillog*
  exclude_files: [".gz$"]
  fields:
    postfix: true
  fields_under_root: true
output.logstash:
  hosts: ["192.168.199.147:5044"]

  elasticsearch:
    hosts: ["http://192.168.199.147:9200"]

Убрав

 fields:
    postfix: true
  fields_under_root: true

Всё заработало. Объясните, пожалуйста, что они делают ?

Вместо blockquote лучше использовать ```. Я поправил ваш пост для примера.

https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html#filebeat-input-log-fields

Спасибо. Но после прочтения осознание не пришло.

fields добавляет эти поля в каждый документ. Если fields_under_root поставлен в true то перечисленные поля в fields появятся на самом верхнем уровне документа, если в false, то в поле fields. Но, в принципе, если вам никаких дополнительных статических полей добавлять в каждую запись не надо, то можно эти параметры смело убрать, и пока о них забыть.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.