Kafka Connect Elasticsearch Sink Connector 與 Elasticsearch 複合、聚合查詢

李易澤 Starck Lee / 李易澤 Starck Lee 2023/06/19 14:02:59
1068

概述: 

      Kafka connect 是一種用於在 Apache kafka 和其他系統之間可擴展且可靠的資料傳輸工具。 

   透過定義 connector 可以輕易地從 Kafka 傳入和傳出大量資料。

 

    Kafka connect 有眾多不同的連接器如下列:

  • RDBMS (Oracle, SQL Server, DB2, Postgres, MySQL)
  • Cloud Object stores (Amazon S3, Azure Blob Storage, Google Cloud Storage)
  • Message queues (ActiveMQ, IBM MQ, RabbitMQ)
  • NoSQL and document stores (Elasticsearch, MongoDB, Cassandra)
  • Cloud data warehouses (Snowflake, Google BigQuery, Amazon Redshift)

               

特性:

  •   Kafka Connect 標準化了數據系統與 Kafka 的集成,從而簡化連接器的開發、部署和管理
  •   支持分布式模式和單機模式部署,且分布式可擴展,並支援故障移轉
  •   通過簡單的 Rest API 管理連接器
  •   針對 Source 和 Sink 都有對應 Offset  管理方案

    

演練:

     今日透過 docker 建立相關環境,使用 Kafka connect 將資料導入於 Elasticsearch ,並實作 Elasticsearch Java API 的查詢功能

 準備內容:

     docker-compose.yml  

    • Kafka : 9092 
    • Elasticsearch : 9200 
    • Kafka connect : 8083

      

       

             

     建立 Kafka connect  

    • name: elasticsearch-sink
    • topic : elasticsearch-topic

       

       

     導入證券成交明細資料

       

              

    下列為實作 Elasticsearch 搜尋項目: 

     

 

     term :

        

        

     match :

       

       

     match (AND) :

       

           

      range :   

        

        

      bool :

           

             

     aggregation :

              

          

        

        

        

        

        

 

    參考資料:

       https://docs.confluent.io/platform/current/connect/index.html#kafka-connect

       https://www.kloia.com/blog/kafka-connect-elasticsearch-sink-connector

       https://blog.csdn.net/zhuocailing3390/article/details/126328770

       https://www.tizi365.com/archives/938.html

      

李易澤 Starck Lee