我计划从一个网页中提取(基本上是带有许可的抓取)一些数据,并将其存储在elasticsearch中(你知道,用于搜索)。
虽然我有从网站抓取数据的许可,
- 但没有API或其他结构化数据源
- 它是手动编写到HTML中的
- 没有唯一标识符来区分每个条目(我基本上会从DOM中提取大约1,000-5,000个条目)。
当我将这些内容存储到es中时,我计划将其放入一个索引和映射类型中,比如说thing
。
然而,随着时间的推移,来源(HTML网页)很可能会发生变化,因为他们添加/删除/更改某些条目的内容。由于源中没有标识符,我无法轻松地识别新条目(甚至更糟的是删除或更改的条目)。
我想保持我的es索引最新状态,我的想法是一种蓝绿机制:
- 我按一定的时间表(每天/每周)运行抽取过程,具体取决于数据源变化的速度
- 每次运行该过程都会生成另一个索引(或完全可以是一个新的集群)。假设当前索引为
index-prod
,而进程构建的新索引为index-rc
- 根据某些启发式方法(基于条目数量的灵活速率检查、我们知道应该起作用的样本查询等),它会验证
index-rc
- 如果它有效,则会执行以下操作之一:
- A. 将查询慢慢切换到新的集群/索引中
- B. 一次性切换到新的集群/索引
我计划使用AWS Elasticsearch Service托管elasticsearch集群,并可能使用Route 53 CNAMEs(以及可能是ELB?),但我想知道elasticsearch本身是否有更隐式的支持来执行此操作?
基本上,我想要交换一个索引的数据和另一个索引的数据。