簡體   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