kafka数据到elaticsearch

时间:2017-12-21 05:38:50

标签: elasticsearch apache-kafka apache-kafka-connect

我正在尝试使用kafka connect elasticsearch发送数据从apache kafka producer到弹性搜索

在elasticsearch中出现以下错误:

[2017-12-21T11:00:54,979][DEBUG][o.e.a.b.TransportShardBulkAction] 
[pageviews7][0] failed to execute bulk item (index) BulkShardRequest 
[[pageviews7][0]] containing [index {[pageviews7][kafkaconnect]
[pageviews7+0+0], source[{"key1":"value1"}]}]
org.elasticsearch.index.mapper.MapperParsingException: failed to find 
type parsed [string] for [key1]

以下是我的kafka-connect-elasticsearch属性文件:

name=elasticsearch-sink
connector.class=
io.confluent.connect.elasticsearch.ElasticsearchSinkConnector
tasks.max=1
topics=pageviews7
key.ignore=true
connection.url=http://localhost:9200
type.name=kafkaconnect
schemas.enable=false
schema.ignore=true

3 个答案:

答案 0 :(得分:0)

这看起来像是将文档索引到Elasticsearch中的问题:

  1. 尝试将文档手动发布到ES
  2. 你应该得到同样的错误。这意味着您的索引映射存在一些问题。
  3. 如果我怀疑索引存在映射问题,您可以使用 topic.index.map 属性写入另一个索引或删除当前索引(只有你不关心数据)。
  4. 如何手动卷入ES的示例:

    curl -XPOST <ES-url>/pageviews7/test_id -d '{"key1":"value1"}'
    

    删除当前的inedex:

    curl -XDELETE <ES-url>/pageviews7
    

答案 1 :(得分:0)

尝试使用stream-reactor Kafka连接器进行弹性搜索。一个使用TCP协议,另一个使用HTTP协议,并且它们已经在生产中每天将5亿个事件下降到ES索引中进行了经过实战测试,它们非常易于配置并且记录良好

https://github.com/landoop/stream-reactor

答案 2 :(得分:0)

您运行的是哪个版本的Elasticsearch?您可以在Kafka Connect连接器配置中设置schema.ignore=true以解决此错误。