elasticsearch,Performance,elasticsearch" /> elasticsearch,Performance,elasticsearch" />

Performance Elasticsearch:插入和更新性能之间的近似数量差异

Performance Elasticsearch:插入和更新性能之间的近似数量差异,performance,elasticsearch,Performance,elasticsearch,我在这里和互联网上读过很多关于插入与更新的帖子,但找不到任何定量的陈述,甚至数量级的陈述。让我们假设我对50%的文档字段执行批量更新操作,我是否可以期望与所有字段数据的批量索引操作相比,性能为插入的80%、50%、20%、10%、1%呢?从经验中得出一个粗略的数字会很有帮助 免责声明:我理解插入在性能方面更可取,但通常在访问/查询性能/复杂性和插入性能之间存在困难的权衡,特别是当您有数据要在一个位置查询,但单个组件具有不同的生命周期时。因此,在我的情况下,我可能会接受某种甚至是重大的写入性能影响

我在这里和互联网上读过很多关于插入与更新的帖子,但找不到任何定量的陈述,甚至数量级的陈述。让我们假设我对50%的文档字段执行批量更新操作,我是否可以期望与所有字段数据的批量索引操作相比,性能为插入的80%、50%、20%、10%、1%呢?从经验中得出一个粗略的数字会很有帮助


免责声明:我理解插入在性能方面更可取,但通常在访问/查询性能/复杂性和插入性能之间存在困难的权衡,特别是当您有数据要在一个位置查询,但单个组件具有不同的生命周期时。因此,在我的情况下,我可能会接受某种甚至是重大的写入性能影响,以保持ES索引的所有其他属性都是理想的。

我认为这是一个不常讨论的特殊原因。 更新操作(添加+删除)不会立即删除文档。相反,它通过标记位将文档标记为已删除。因此,文档添加和文档更新的性能差别不大

但是,一旦有足够多的文档被标记为已删除,Lucene索引将被合并,已删除的文档将被完全删除。在此之前,文件一直堆积在一起,因为它们无法释放空间

因此,考虑的唯一性能指标是搜索的性能(因为它在结果和时间复杂度方面都会受到影响)


有关文档合并的详细信息。

谢谢。我不明白,如果我用部分文档(作为批量操作的一部分)发送更新,为什么会有删除?默认情况下,弹性搜索不支持更新操作。因此,即使您正在部分更新文档(只有一些字段正在更新),弹性体也在完全重新编制文档的索引。简而言之,如果您修改索引文档的任何字段,elastic将使用delete。我希望这有帮助!谢谢,那很有帮助。但是你在添加和删除+添加之间没有粗略的、近似的数量差异?不幸的是,没有。但是如果你进行某种定量分析,我将非常乐意讨论。