2016-03-18 18 views
0

Veritabanını dizine eklemek için kullanılan logstash konfigürasyon dosyası aşağıdadır (bu durumda sadece csv dosyası). Logstash'ı her defasında bu konfigürasyonla çağırdığımda, mevcut elasticsearch dizinine eklenir ve böylece çoğaltılır. Mevcut dizinin üzerine yazılmasını gerçekten istiyorum. Bunu, bir tane action => "delete" ve diğeri action => "index" olmak üzere iki yapılandırma çağrısıyla yapabileceğimin farkındayım, ancak bunu bir adımda yapabilmem gerekiyor gibi görünüyor. Ayrıca, bunun için upsert kullanabilirsem, documentation'dan net değil. (Ayrıca, belge indekslendikten sonra logstash çıktığı anlamına gelen stdin seçeneğini kullandığımı fark ettim, değişiklik için belgeyi izlemeye devam etmiyor) Herhangi bir yardım için teşekkürler.Logstash yapılandırma dosyası üzerinden exisiting elasticsearch dizininin üzerine yazılması mümkün mü

input { 
    stdin {} 
} 
filter { 
    csv { 
     columns => [a,b,c,d] 
     separator=> "," 
    } 
} 

output { 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     index => "database.csv" 
    } 
} 
+1

Tamam, benzer bir gönderi buldum http://stackoverflow.com/questions/21716002/importing-and-updating-data-in-elasticsearch/21738549#21738549 – user3071643

cevap

1

varsa (veya hesaplayabilir) sizin csv bir kimliği, sadece bunu:

output { 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     index => "database.csv" 
     document_id => "%{yourComputedId}" 
    } 
} 

Sonra dizine aynı id deneyin her zaman, güncellenmiş olacak es endeksinde.

İlgili konular