通过logstash(6.8.6)将es(6.8.6)数据导入clickhouse

本文介绍如何使用Logstash从Elasticsearch提取数据,并转换为ClickHouse所需的格式,最终导入ClickHouse。涵盖配置文件编写、字段类型转换及CSV文件导入等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 编写logstash数据转换的配置文件export-csv.yml
    需要根据es中数据和导出的原始数据格式对应的clickhouse中字段类型对数据的要求在filter中对数据的处理
    input {
      elasticsearch {
        hosts => "localhost:9200"
    	index => "test"
      }
    }
    # 通过filter对数据做ETL以符合clickhouse要求
    filter {
      # 将long类型毫秒值转为指定时间格式
      ruby {
    	code => "event.set('timestamp',Time.at((event.get('timestamp').to_i)/1000).strftime('%Y-%m-%d %H:%M:%S'))"
      }
      # 将指定字段类型转为符合clickhouse要求的,需要根据es中数据和导出的原始数据格式对应的clickhouse中字段类型决定
      mutate {
        convert => {
          "dstType" => "integer"
          "downStreamOct" => "integer"
          "totalOct" => "integer"
          "upStreamOct" => "integer"
          "srcType" => "integer"
    	}
      }
    }
    output {
      csv {
    	fields => ["srcRegion","dstType","downStreamOct","totalOct","upStreamOct","srcType","timestamp"]
    	path => "/tmp/test.csv"
      }
    }
    
  2. 启动logstash,-f指定配置文件不使用logstash默认配置文件路径
    ./logstash-6.8.6/bin/logstash -f test.yml
  3. clickhouse中创建表,字段类型需要注意根据es中字段类型和es导出的数据格式决定,字段类型决定了可以写入clickhouse的该字段数据的格式
    CREATE TABLE traffic.traffic_monitor
    (
      -- 指定字段类型
      `srcRegion` String,
      `dstType` UInt8,
      `downStreamOct` UInt64,
      `totalOct` UInt64,
      `upStreamOct` UInt64,
      `srcType` UInt8,
      `timestamp` DateTime,
    )
    -- 指定存储引擎、分区字段和排序字段
    ENGINE = MergeTree()
    PARTITION BY toYYYYMMDD(timestamp)
    ORDER BY (timestamp)
    
  4. 通过csv文件将数据导入clickhouse
    csv首行有字段名称:clickhouse-client --query "INSERT INTO traffic.traffic_monitor FORMAT CSVWithNames" < test.csv
    csv首行无字段名称:clickhouse-client --query "INSERT INTO traffic.traffic_monitor FORMAT CSV" < test.csv
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值