我正在考虑维护Elasticsearch索引的策略,我发现了一个可以很好地处理维护的插件但是我想与Elasticsearch更加亲密,因为我真的很喜欢她,插件会让游戏时间变得有点小如果你知道我的意思,那就不那么亲密了.
所以无论如何,如果我有一个会有相当频繁更新的数据集(比如~1 update/10s),我会遇到Elasticsearch的性能问题吗?当单个行更改或必须完全重新构建索引时,是否可以完成部分索引更新?我计划实现的策略涉及在我使用我的应用程序(python postgre)进行CRUD时修改索引,因此代码中会有一些开销,我并不过分关注,只是性能.我的策略是否常见?
我使用了Sphinx,它确实有部分重新索引,它与cron作业一起运行以保持同步,它在索引和配置中定义的MySQL表之间进行了映射.这是Sphinx的推荐方法.是否有推荐的Elasticsearch方法?
处理这个问题有很多不同的策略,没有简单的一种尺寸适合所有解决方案.
为了回答你的一些问题,首先,在Elasticsearch/Lucene中没有部分更新.如果更新文档中的单个字段,则会重写整个文档.在设计架构时,请注意这对性能的影响.但是,如果您更新单个文档,则应立即提供.Elasticsearch是一个近乎实时的搜索引擎,您不必担心不断重新生成索引.
对于您的写入加载一次更新/ 10s,默认性能设置应该没问题.事实上,ES的写入负载非常低,它可以扩展得更高.例如,Netflix在其中一个集群中执行700万次更新/分钟.
就同步策略而言,我写了一篇关于"保持弹性搜索同步"的深入文章