在美国的Linux机器上,我在ElasticSearch实例#1(我们将其称为ES1)上有一个索引(我们将其称为index01)。我在英国的Linux机器上有另一个ElasticSearch实例(我们将其称为ES2)。我需要做的是每天一次从ES1到ES2复制index01。
乍一看,使用“远程索引”功能似乎很容易,但现在我不知所措,并且对文档感到困惑。
因此,我首先在ES2上创建了一个索引,称为index01,使用的设置和参数与ES1上的index01完全相同。然后,根据文档,我应该进行此调用以建立索引:
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}
结果是,我不需要在query
子句中将任何内容作为match
的一部分,因为我只想将整个索引移过来。
第一个问题:每天,ES1上的index01都添加了许多文档 和许多文档已删除。如何使两个索引保持同步,并确保ES2上的index01与ES1完全匹配?
第二个问题-是否可以仅使用邮递员按计划执行此操作,还是我需要构建一个应用程序才能使此同步每24小时发生一次?
答案 0 :(得分:1)
Reindex只是将信息从一个索引复制到另一个索引。它不会跟踪更改。
因此,第一个问题的答案是您不能使用简单的重新索引。您应该从ES2删除索引,然后在从ES1重新索引之后。
如果ES1中没有删除,则由于op_type:create
属性,因此不需要索引删除步骤。 (选中https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)
关于第二个问题,您可以使用2个电话直接从邮递员处进行操作: