elasticsearch - NiFi putelasticsearch5错误-内容​​类型丢失

标签 elasticsearch apache-nifi

我正在使用PutElasticsearch5处理器将文档索引到ES中。在PutElasticsearch5将avro转换为json之前,我的工作流程中还有其他几个处理器。

运行工作流时出现以下给定错误。

java.lang.IllegalArgumentException:验证失败:1:内容类型丢失; 2:内容类型丢失;

我可以找到其他相关信息来解决此问题。 Putelasticsearch5配置下没有“内容类型”的设置

最佳答案

我也遇到了这个问题,就像user2297083所说的,如果将批处理的JSON文件发送到PutElasticsearch5中,那么它将抛出此异常并将文件移到FAILED关系中。处理器似乎一次只能处理一个写入文件的JSON对象,而该对象不能被数组括号包围。因此,如果您的文件包含以下内容:[{"key":"value"}]然后,如果您发送相同的文档,则处理器将失败:{"key":"value"}然后,如果您的其他配置正确,处理器将成功建立索引。
一种解决方案是,如果您不想在进入PutElasticsearch5处理器之前通过拆分器发送所有内容,则使用一个拆分器处理器,该处理器以与FAILURE关系到PutElasticsearch5的失效关系工作,然后将数据发送回同一个PutElasticsearch5中。更多的FlowFiles意味着您的节点中会有更多的IO,因此,我正在积极寻找一种让PutElasticsearch5处理器处理批处理JSON文档的方法。我觉得必须要有一种方法,而不必编写它的自定义迭代或创建大量新的FlowFiles。
编辑:
实际上,它确实回答了这个问题。他的问题是:

I am using PutElasticsearch5 processor to index documents into ES.My workflow has couple of other processors before PutElasticsearch5 which converts avro to json.

I am getting the below given error when I run the workflow.

java.lang.IllegalArgumentException: Validation Failed: 1: content type is missing;2: content type is missing;


当传递格式不正确的JSON文件时,这正是PutElasticsearch5处理器给出的异常消息。他的问题是为什么会这样。
我的回答说明了为什么会发生这种情况(一个可能的用例),以及如何通过给出有效的解决方案来解决它。
在这种情况下,正确格式化的JSON表示FlowFile包含一个JSON对象,因为它的内容如上所示。
不过,进一步研究这一点很有意义,因为处理器可以一次使用一个JSON文档FlowFile,因为您可以使用FlowFile属性来指定索引文档的“id”。如果使用了FlowFile的uuid并且它是批处理JSON,即[{"one":1},{"two":2},{"three":3}]那么将在Elasticsearch中使用相同的“索引”,“类型”和“id”(id为FlowFile uuid)为每个JSON对象建立索引,这是不希望的。

关于elasticsearch - NiFi putelasticsearch5错误-内容​​类型丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810774/

相关文章:

json - 验证失败 : 1: no requests added in bulk indexing

php - 如何在 Elasticsearch 中使用带有 function_score 的 bool 查询?

docker - 典型的ElasticSearch/Logstash/Kibana部署模型是什么样的

apache-nifi - 如何一次清空Nifi中的所有队列?

java - NiFi-1.0.0 - 加载 lua 脚本

elasticsearch - Elasticsearch按以下类别分组

java - 用于日志记录的 Elasticsearch - 需要架构建议

apache-nifi - JOLT 转换 Json 数组,同时保持数组结构

groovy - 在nifi中如何使用groovy脚本调用休息服务

java - NiFi开发自定义处理器: import org. apache.nifi.processors错误