elasticsearch通过logstash去重数据
下载与es对应版本的logstash
下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.7.1.tar.gz
一、去重原理
通过logstash将需要去重的索引导入新的索引,导入过程中为每个文档指定唯一id,文档数据相同时会自动过滤。
二、去重步骤
1.解压logstash-6.7.1.tar.gz
tar -zxvf logstash-6.7.1.tar.gz
2.写conf文件
input { elasticsearch { hosts => "192.168.56.6" #es主节点ip index => "t_people_latlng20191101" #需要去重的索引 query => '{ "sort": [ "_doc" ] }' } } filter { mutate { remove_field => ["@timestamp", "@version"] #去除多余字段 } fingerprint { source => ["deviceid", "utc"] #根据哪些字段去重,此处根据id和时间字段 target => "[@metadata][fingerprint]" method => "MURMUR3" #设置唯一id的方法 concatenate_sources => true #将多个字段拼接为唯一id } } output { stdout { codec => dots } #输出打印 elasticsearch { hosts => "192.168.56.6" #指定的es主节点ip index => "newt_people_latlng20191101" #新的索引 document_id => "%{[@metadata][fingerprint]}" } }
3.执行conf文件
cd logstash-6.7.1
./bin/logstash -f ship20201103.conf
4.执行多个conf文件
#!/bin/bash #要执行的conf文件目录 cd "/data/es/logstash-6.7.1/conf" dir="/data/es/logstash-6.7.1/conf" files=`find . -name "ship*"` for file in $files do #执行多个conf,需要分别指定不同的data路径 /data/es/logstash-6.7.1/bin/logstash -f $dir/$file --path.data $dir/data/${file:2:12} done