1. 程式人生 > 其它 >elasticsearch通過logstash去重

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 -zxvflogstash-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