【问题标题】:Impact of frequent updates in elasticsearchelasticsearch中频繁更新的影响
【发布时间】:2020-08-02 21:38:07
【问题描述】:

我们计划使用 elasticsearch 来存储商家资料详细信息和他的交易金额摘要。 我们必须更新每笔交易的文件以保持总金额同步。

  1. 是否可以频繁更新文档以增加字段?
  2. 我们计划使用更新 API 来更新一个文件,它会重新索引整个文档吗?是否有任何选项可以仅更新特定字段而不重新索引其他字段?
  3. 如果我们有两个索引或者一个具有两种类型的索引,一种用于概要文件,另一种用于摘要,那会更好吗?

提前致谢。

【问题讨论】:

  • 好问题,如果您需要更多信息,请通过我的回答和评论

标签: elasticsearch


【解决方案1】:

请在线查找答案:

  1. 是否可以频繁更新文档以增加字段?

这是非常主观的,并且基于各种参数,例如索引中有多少文档、多少分片、多少数据节点以及您的写入 QPS 等,Elasticsearch 具有很强的可扩展性,如果您调整集群和索引,您可以获得非常高的吞吐量,没有任何问题。如果您提供更多详细信息,我们可以建议如何针对像您这样的写入繁重的系统进行调整。请参考ES blog for tunning the indexing speed

  1. 我们计划使用更新 API 来更新一个字段,它会重新索引整个文档吗?是否有任何选项可以仅更新特定字段而不重新索引其他字段?

是的,即使您更新了一个字段,elasticsearch 内部也会将旧文档标记为已删除(软删除)并创建一个新文档,然后在分段合并期间,旧删除的文档实际上会被删除。 Elastician in this SO answer 详细介绍了更多关于 ES 部分更新的信息

  1. 如果我们有两个索引或者一个具有两种类型的索引,一种用于概要文件,另一种用于摘要,会更好吗?

这取决于,如果在查询时需要同时查看两个索引 (types are deprecated in the latest version),那么创建两个索引是没有意义的,因为非规范化数据会提供更好的搜索性能。

另外创建两个带有连接的索引实现起来会有点复杂,而且无论如何您需要经常为作者更新交易数据,这将拥有最多的卖家数据并且大索引上的更新更多代价高昂,因此即使您在配置文件索引上保存更新但仍然非常小,恕我直言,它不会提供更好的性能,但您可以通过一些压力测试进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多