ElasticSearch-按计划从远程重新索引,每天在源索引上删除

时间:2018-09-24 23:42:57

标签: elasticsearch

在美国的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小时发生一次?

1 个答案:

答案 0 :(得分:1)

Reindex只是将信息从一个索引复制到另一个索引。它不会跟踪更改。

因此,第一个问题的答案是您不能使用简单的重新索引。您应该从ES2删除索引,然后在从ES1重新索引之后。

如果ES1中没有删除,则由于op_type:create属性,因此不需要索引删除步骤。 (选中https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

关于第二个问题,您可以使用2个电话直接从邮递员处进行操作:

  • 首次通话:从ES2删除索引
  • 第二次调用:从ES1重新索引到ES2