【问题标题】:Blue/Green "deployment" of elasticsearch data?弹性搜索数据的蓝/绿“部署”?
【发布时间】:2017-03-16 01:24:55
【问题描述】:

我正计划从网页中提取(基本上是在获得许可的情况下抓取)一些数据并将其存储在 elasticsearch 中(你知道,用于搜索)。

虽然我有权从网站上抓取数据,但

  • 此数据没有 API 或其他结构化来源
  • 它是手动直接编写成 HTML
  • 没有唯一标识符来区分一个条目(我将从 DOM 中提取大约 1,000-5,000 个条目)。

当我将它存储在 es 中时,我打算将它放入一个索引和映射类型中,例如 thing

但是,随着时间的推移,源(HTML 网页)可能会随着它们添加/删除/更改其中一些条目的内容而发生变化。由于源中没有标识符,我无法轻松识别新的标识符(更糟糕的是,已删除或更改的标识符)。

我想让我的 es 索引保持最新,我想的是某种蓝绿机制:

  • 我根据源更改的速度按某个计划(每天/每周)运行提取过程
  • 每次运行该进程都会产生另一个索引(或者可能完全是一个新集群)。假设当前索引为index-prod,进程构建的新索引为index-rc(候选发布)
  • 它根据一些启发式方法验证 index-rc(对条目数量的灵活速度检查、我们知道应该有效的示例查询等)
  • 如果它是有效的,它要么:
    • A.慢慢地将查询翻转到新的集群/索引中
    • 或 B. 一次性翻转到新的集群/索引

我计划使用AWS Elastisearch Service 托管elasticsearch 集群,并且可能使用Route 53 CNAMEs(也可能是ELB?)来设计一些东西,但我想知道elasticsearch 本身是否有更隐含的支持来做到这一点?

本质上,我想将一个索引的数据交换为另一个。

【问题讨论】:

    标签: amazon-web-services elasticsearch deployment blue-green-deployment


    【解决方案1】:

    您不需要在索引之间交换整个数据...如果我没看错,您可以使用Aliases 从实际版本更改为下一个索引版本。

    为了慢慢改变查询端点,我还假设一些负载均衡器,比如 nginx,是最好的解决方案。网上有很多关于这个的cases

    【讨论】:

      【解决方案2】:

      我从 Stackoverflow 之外的另一个来源收到了回复。

      【讨论】:

        【解决方案3】:

        我认为您可以为此使用Reindex API

        【讨论】:

        • 重新索引看起来对从一个复制到另一个很有用。我需要重新播种索引。根据其他答案,别名看起来像是正确的解决方案。
        猜你喜欢
        • 2019-01-28
        • 2019-01-01
        • 2021-07-18
        • 1970-01-01
        • 2017-07-10
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        相关资源
        最近更新 更多