弹性搜索数据的蓝/绿“部署”?

时间:2016-11-02 16:24:38

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

我计划从网页中提取(基本上是抓取,允许)一些数据并将其存储在elasticsearch中(你知道,搜索)。

虽然我有权从网站上删除数据,但

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

当我将其存储在es中时,我计划将其放入一个索引并转换为映射类型,例如thing

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

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

  • 我按照某个时间表(每日/每周)运行提取过程,具体取决于更改源的速度
  • 每次运行该过程都会产生另一个索引(或者可能是一个新的集群)。假设当前索引为index-prod,并且该流程构建的新索引为index-rc(候选发布版)
  • 根据一些启发式方法验证index-rc(对条目数量进行灵活的速度检查,我们知道应该使用的样本查询等等。)
  • 如果它有效,它可以:
    • 甲。慢慢地将查询翻转到新的集群/索引
    • 或B.一次性翻转到新的群集/索引

我打算使用AWS Elastisearch Service托管elasticsearch集群,并且可能使用Route 53 CNAMEs(也许是ELB?)来汇总一些内容但是我想知道在elasticsearch本身中是否存在更多的隐式支持这样做?

基本上,我想将一个索引的数据换成另一个索引。

3 个答案:

答案 0 :(得分:1)

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

要慢慢更改查询端点,我还假设某些Load Balancer(如nginx)是最佳解决方案。网上有很多cases

答案 1 :(得分:0)

我认为您可以使用Reindex API

答案 2 :(得分:0)

我从Stackoverflow以外的其他来源听说过这个。