我有一个数据来源,它提供了文档的最新快照(而不是差异)。我希望同样的快照反映在搜索的elasticsearch上。我有以下选择来做同样的事情:
[delete all documents][1],将快照中的所有内容大容量更新到备用快照上,并将别名(本质上的别名API -原子)翻转到更新的别名,以便搜索最新的快照。注意:差别应该很小。
在弹性的性能、成本和空间效率方面,方法2与方法3相比如何?
发布于 2017-04-05 04:45:34
在内存需求和计算需求方面,选项1显然是性能最差的。您需要: 1)查询主数据源中的所有记录;2)查询Elasticsearch中的所有记录;3)计算出差异;4)再次批量更新Elasticsearch中的所有记录。随着时间的推移,您的主数据源总是包含大约相同数量的记录,但是ES中的记录数量将增加,因为您的快照中有不属于Elasticsearch的新记录,也有需要从Elasticsearch中删除的记录,这意味着上面的步骤2每次将检索越来越多的文档。
使用选项2,您需要1)查询主数据源中的所有记录,2)批量索引它们,3)查询Elasticsearch中未更新的记录,4)在Elasticsearch中批量更新它们。这也不是我的首选,因为与选项1的原因相同,即您的Elasticsearch索引将继续增长。
在我看来,备选方案3最接近理想的解决方案。我建议的是,每次需要对快照进行索引时,都要创建一个新的索引,对快照数据进行批量索引,然后将searchable别名转换为新的索引。您也可以删除旧索引,因为您不再使用它。不需要做任何区分,大容量删除或大容量更新任何事情。
searchable)
searchable)
searchable)
https://stackoverflow.com/questions/43191422
复制相似问题