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
原文地址:https://www.cnblogs.com/asksk/p/15480502.html