Blue/Green "deployment" 的 elasticsearch 数据?
Blue/Green "deployment" of elasticsearch data?
我计划从网页中提取(本质上是在获得许可的情况下抓取)一些数据并将其存储在 elasticsearch 中(你知道,用于搜索)。
虽然我有权从网站上抓取数据,
- 此数据没有API或其他结构化来源
- 直接手动编写到 HTML
- 没有将一个条目与另一个条目区分开来的唯一标识符(我基本上将从 DOM 中提取大约 1,000-5,000 个条目)。
当我将其存储在 es 中时,我计划将其放入一个索引和映射类型中,比如 thing
。
但是,随着时间的推移,来源(HTML 网页)可能会随着其中一些条目的 add/remove/change 内容而发生变化。由于源中没有标识符,我无法轻易识别新的(甚至更糟的是,删除的或更改的)。
我想让我的 es 索引保持最新,我想的是某种蓝绿机制:
- 我 运行 提取过程在某个时间表 (daily/weekly) 取决于源变化的速度
- 每次 运行 过程都会生成另一个索引(或者可能是一个新的集群)。假设当前索引是
index-prod
,进程构建的新索引是 index-rc
(候选发布)
- 它根据一些启发式方法(对条目数量的灵活速度检查、我们知道应该有效的示例查询等)验证
index-rc
- 如果它有效,它要么:
- 一个。慢慢地将查询翻转到新的 cluster/index
- 或者B.一枪翻到新的cluster/index
我计划使用 AWS Elastisearch Service and could possibly concote something using Route 53 CNAMEs(也许还有 ELB?)托管 elasticsearch 集群,但我想知道 elasticsearch 本身是否有更隐含的支持来执行此操作?
本质上,我想将一个索引的数据换成另一个。
我想你可以用 Reindex API 来做这个。
我从 Whosebug 之外的另一个来源听到了这件事。
indice aliases解决这个问题
这是时间序列数据的常见现象。 ES time series documentation.
中记录了原子交换索引的示例,将一个标记为 current 并清除旧索引
您不需要在索引之间交换整个数据...如果我没看错,您可以使用 Aliases 从实际版本更改为下一个索引版本。
为了慢慢改变查询端点,我还认为一些负载均衡器,比如 nginx,是最好的解决方案。网上有很多关于这个的cases。
我计划从网页中提取(本质上是在获得许可的情况下抓取)一些数据并将其存储在 elasticsearch 中(你知道,用于搜索)。
虽然我有权从网站上抓取数据,
- 此数据没有API或其他结构化来源
- 直接手动编写到 HTML
- 没有将一个条目与另一个条目区分开来的唯一标识符(我基本上将从 DOM 中提取大约 1,000-5,000 个条目)。
当我将其存储在 es 中时,我计划将其放入一个索引和映射类型中,比如 thing
。
但是,随着时间的推移,来源(HTML 网页)可能会随着其中一些条目的 add/remove/change 内容而发生变化。由于源中没有标识符,我无法轻易识别新的(甚至更糟的是,删除的或更改的)。
我想让我的 es 索引保持最新,我想的是某种蓝绿机制:
- 我 运行 提取过程在某个时间表 (daily/weekly) 取决于源变化的速度
- 每次 运行 过程都会生成另一个索引(或者可能是一个新的集群)。假设当前索引是
index-prod
,进程构建的新索引是index-rc
(候选发布) - 它根据一些启发式方法(对条目数量的灵活速度检查、我们知道应该有效的示例查询等)验证
index-rc
- 如果它有效,它要么:
- 一个。慢慢地将查询翻转到新的 cluster/index
- 或者B.一枪翻到新的cluster/index
我计划使用 AWS Elastisearch Service and could possibly concote something using Route 53 CNAMEs(也许还有 ELB?)托管 elasticsearch 集群,但我想知道 elasticsearch 本身是否有更隐含的支持来执行此操作?
本质上,我想将一个索引的数据换成另一个。
我想你可以用 Reindex API 来做这个。
我从 Whosebug 之外的另一个来源听到了这件事。
indice aliases解决这个问题
这是时间序列数据的常见现象。 ES time series documentation.
中记录了原子交换索引的示例,将一个标记为 current 并清除旧索引
您不需要在索引之间交换整个数据...如果我没看错,您可以使用 Aliases 从实际版本更改为下一个索引版本。
为了慢慢改变查询端点,我还认为一些负载均衡器,比如 nginx,是最好的解决方案。网上有很多关于这个的cases。