弹性搜索 - 查找具有冲突字段类型

时间:2017-09-29 12:57:55

标签: elasticsearch kibana

我正在使用弹性搜索5.6.2与Kibana,我目前正面临一个问题

我的文档在字段timestamp上编制索引,这通常是一个整数,但是最近有人记录了一个时间戳不是整数的文档,并且Kibana抱怨类型冲突。

发现面板不显示任何内容,并弹出以下错误:

  • Saved "field" parameter is now invalid. Please select a new field.
  • Discover: "field" is a required parameter

如何查找导致这些冲突的文档,以便找到创建错误日志的服务?

1 个答案:

答案 0 :(得分:1)

字段类型(整数或文本/关键字)不是基于每个文档定义的,而是基于每个索引定义的(在映射中)。我猜你正在操纵时间序列数据,你可能每天(或每月或......)都有非索引。

在Kibana开发工具中:

  1. 使用GET _cat/indices
  2. 列出创建的索引
  3. 对于每个索引(在我的示例中为logstash-2017.09.28),执行GET logstash-2017.09.28/_mapping并检查@timestamp
  4. 中字段的类型

    索引之间的字段类型可能不同。

    您将无法更改已创建索引的字段类型。删除文档不会解决您的问题。唯一的解决方案是删除索引或使用新字段类型(在特定映射中)重新索引整个索引。

    为避免将来索引出现此问题,解决方案是创建一个索引template,其中包含一个映射,告知字段@timestamp的类型为date或其他类型。