繁体   English   中英

Elasticsearch接收器仅使用kafka-connect-elasticsearch +时间戳SMT仅获得新消息,而不接收前一条消息

[英]Elasticsearch sink only get new messages and not the previous one using kafka-connect-elasticsearch + timestamp SMT

我正在使用kafka-connect-elasticsearch插件将消息从我的kafka发送到Elasticsearch。 我在kafka中的数据包含一个日期字段(时间戳格式)。

我的第一个问题是,当我使用此插件时,Elasticsearch索引无法将日期字段识别为日期类型,但将其识别为很长的时间...我有点在连接器配置中使用SMT转换来解决此问题。

这是我当前的配置,允许我在Elastic中推送数据:

{
  "name": "elasticsearch-sink-test",
  "config": {
    "connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
    "tasks.max": "1",
    "topics": "test.test",
    "key.ignore": "true",
    "connection.url": "http://localhost:9200",
    "type.name": "kafka-connect",
    "name": "elasticsearch-sink-test",
    "Batch.size": 100,
    "max.buffered.records": 1000,
    "Max.retries": 10,
    "Retry.backoff.ms": 1000,
    "flush.timeout.ms": 20000,
    "max.in.flight.requests": 3
    "transforms": "date",
    "transforms.date.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
    "transforms.date.target.type": "Date",
    "transforms.date.field": "date",
    "transforms.date.format": "yyyy-MM-dd HH:mm:ss"
  }
}

我现在的问题是:Elasticsearch不会获取存储在kafka中的所有先前消息,而只会获取新的消息(在我启动Elasticsearch连接器后,所有推送到kafka的新消息)。

如何配置连接器以使Elastic获得所有消息? 是否有任何变通办法可以使“弹性”理解日期字段为时间戳?

(有关信息,我的数据来源是带有debezium CDC连接器的MongoDB)

先感谢您

如何配置连接器以使Elastic获得所有消息?

就像普通的卡夫卡消费者一样,您需要将偏移量设置为最早

consumer.auto.offset.reset=earliest 

是否有任何变通办法可以使“弹性”理解日期字段为时间戳?

是的,在Elasticsearch中使用索引或动态映射。 默认情况下,所有摄取的数字都是数字值。 实际上,只有格式正确的日期字符串才会被索引为日期。 如果您不控制Elasticsearch服务器或索引设置,则通常由该系统的管理员进行设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM