首页 > 解决方案 > PutElasticsearchHttpRecord:封装的令牌和分隔符之间的字符无效

问题描述

我正在尝试使用QueryDatabaseTable -> UpdateAttribute-> PutElasticSearchHttpRecord从数据库中获取特定记录

ES 处理器抛出错误,因为 Java.IO.Exception Invalid char between encaped token and delimiter。

请在附件中找到我的配置。如何解决这个问题? 在“UpdateAttribute”之后,我在队列中得到了正确的结果,但无法将其推送到 ES 中。我已将 schema.name 属性添加到适当的架构中。以下是我在 UpdateAttribute 处理器之后进入队列的正确结果。如何修复标记和分隔符之间的无效字符错误?

[ {
  "TimeOfDay" : "2018-09-20T18:10:36.941",
  "BMU_Debug_Pack_BlkVolt_Max2" : 4114.0,
  "BMU_Debug_Pack_BlkVolt_Max1" : 4114.0,
  "BMU_Debug_Pack_BlkVolt_Max3" : 4114.0,
  "BMU_Debug_Pack_BlkVolt_Max0" : 4116.0,
  "BMU_Debug_Pack_CTemp_Min" : 21.0,
  "BMU_Debug_Pack_CurrVolt_Curr" : 2.0,
  "BMU_Debug_Pack_Blk_Volt_Delta" : 6.0,
  "total_Difference" : 15.0
} ]

谢谢!请帮助我应该改变什么?

查询数据库表

查询数据库表 SQL

弹性搜索

弹性搜索配置

ES 架构

标签: mysqlapacheapache-nifi

解决方案


您需要配置Avro Reader而不是CSV ReaderPutElasticSearchHttpRecord中配置,因为Querydatabase表处理器以Avro 格式输出流文件。

embedded avro schema在 Avro Reader 控制器服务中使用 。在此处输入图像描述


推荐阅读