使用Logstash复制ElasticSearch-Index

时间:2014-11-04 15:28:03

标签: elasticsearch logstash

我在一台机器上有一个现成的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但似乎无法在查询中使用它(或者是可能的)

有什么建议吗?也许完全不同的方法?非常感谢!

1 个答案:

答案 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,就可以停止。