我在一台机器上有一个现成的Apache-Index,我想使用logstash 克隆到另一台机器上。我觉得相当容易
input {
elasticsearch {
host => "xxx.xxx.xxx.xxx"
index => "logs"
}
}
filter {
}
output {
elasticsearch {
cluster => "Loa"
host => "127.0.0.1"
protocol => http
index => "logs"
index_type => "apache_access"
}
}
拉过文档,但不会因为它使用默认查询"*"
而停止(原始索引有〜50.000个文档,当新索引超过600.000个文档并且上升时,我杀死了前一个脚本)
接下来我尝试确保文档会更新而不是重复,但是this commit还没有成功,所以我没有主要文件..
然后我记得sincedb
但似乎无法在查询中使用它(或者是可能的)
有什么建议吗?也许完全不同的方法?非常感谢!
答案 0 :(得分:0)
假设elasticsearch输入创建了一个带有文档id的logstash事件(我假设它将是_id或类似的东西),尝试按以下方式设置弹性搜索输出:
output {
elasticsearch {
cluster => "Loa"
host => "127.0.0.1"
protocol => http
index => "logs"
index_type => "apache_access"
document_id => "%{_id}"
}
}
这样,即使弹性搜索输入因任何原因继续无限期地推送相同文档,elasticsearch也只会更新现有文档,而不是使用新ID创建新文档。
一旦达到50,000,就可以停止。