【发布时间】:2017-07-26 00:57:32
【问题描述】:
要求:
- 单个 ElasticSearch 索引需要从每周删除的一堆平面文件中构建
- 除了这个每周提要之外,我们还会获得间歇性差异文件,提供不属于原始提要的附加数据(插入或更新,不删除)
- 将这些文件(每周完整提要或差异文件)解析并加载到 ElasticSearch 的时间不是很长
- 连续两周收到的每周提要预计会有显着差异(删除、添加、更新)
- 索引对于应用程序的运行至关重要,它需要接近零停机时间
- 我们并不关心 Feed 中所做的确切更改,但我们需要能够回滚到以前的版本,以防当前加载由于某种原因而失败
- 显而易见,搜索需要快速响应
鉴于这些要求,我们计划执行以下操作:
- 对于增量更新 (diff),我们可以使用批量 API 按原样插入或更新记录
- 对于完整更新,我们将重建一个新索引并交换此 post 中提到的别名。在回滚的情况下,我们可以恢复到之前的工作索引(如果回滚需要回几个版本,备份也会保留)
问题:
- 在重建索引时,这是最好的方法还是更好地使用内置版本控制对先前创建的索引上的 CRUD 文档?
- 修改数据(删除、更新)对底层 lucene 索引/分片有什么影响?修改会导致碎片化或效率低下吗?
【问题讨论】:
标签: search elasticsearch lucene