【发布时间】: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