代码之家  ›  专栏  ›  技术社区  ›  Stpete111

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

  •  0
  • Stpete111  · 技术社区  · 7 年前

    我在美国的一个Linux设备上的ElasticSearch实例1(我们称之为ES1)上有一个索引(我们称之为index01)。我在英国的一个Linux设备上有另一个ElasticSearch实例(我们称之为ES2)。我需要做的是每天将index01从es1复制到es2一次。

    起初,我认为从远程功能中使用reindex很容易,但现在我被这些文档弄糊涂了。

    因此,我首先在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 回复  |  直到 7 年前
        1
  •  1
  •   banuj    7 年前

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

    所以,第一个问题的答案是你不能使用简单的reindex。您应该从ES2中删除索引,然后从ES1中重新索引索引。

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

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

    • 第一次调用:从es2中删除索引
    • 第二次调用:从es1重新索引到es2