ElasticSearch - 架构中的字段类型不匹配

时间:2016-05-25 14:02:54

标签: elasticsearch schema logstash kibana

我使用Logstash运行ELK堆栈,从RabbitMQ中提取日志事件。有许多记录器正在写入队列,虽然它们都使用类似的模式编写JSON,但其中一个以Int的形式发送到特定字段,而其他记录以String的形式发送。 1}}。

如果要获取索引的第一条消息包含一个字符串,一切正常,但似乎如果第一条消息包含一个int,那么索引中的字段类型就是Int,并且文档在哪里字符串无法索引。

有没有办法定义ES应该提前使用的模式?或者是更改Int记录器以将号码作为String发送的最佳解决方案?

1 个答案:

答案 0 :(得分:3)

你应该为这个特定的字段定义一个映射,否则elasticsearch会在第一次出现时“猜测”它。

"name": {
    "type": "string"
}

另见: https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.htmlhttps://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html

  

当您索引包含以前未见过的新字段的文档时 - Elasticsearch将使用动态映射来尝试从JSON中可用的基本数据类型中猜测字段类型