【问题标题】:Is elasticsearch strongly consistent?elasticsearch是否强一致?
【发布时间】:2019-11-07 11:40:43
【问题描述】:

elasticsearch 是否强一致?我的意思是,如果对 elasticsearch 的写入成功,那么任何对它的查询都会返回最新的数据吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    没有。 Elastic Search 最终是一致的,而不是强一致的。

    索引操作是接近实时的,如果新的写入没有被刷新,即使你的写入请求成功响应,你也无法获取最新的数据。

    【讨论】:

    • 值得注意的是,您可以通过利用?refresh=wait_for参数在获得成功的索引响应后立即获取最新数据。
    • 感谢您的指出!但是,wait_for 会降低性能。另外恕我直言,当网络分区发生时,即使我们使用 wait_for,客户端也可能从副本中获取陈旧数据。
    • 这个问题没有提到性能,但是是的,不应该“等待”每个索引响应都被刷新。关于网络分区,如果发生这种情况,您还有其他问题,而不仅仅是陈旧的数据。首先要说的是ES is NOT a database
    • 根据 CAP 定理,你只能拥有 3 个中的 2 个。由于 ES 允许在网络分区 (P) 发生时继续服务请求 (A),它必须牺牲一致性 (C)。它仍然不是强一致的,尽管如果网络分区没有发生,wait_for 可以部分缓解一致性问题。
    • CAP 定理doesn't really apply to ES。关于该主题的其他良好讨论:herehere
    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多