【问题标题】:Set consistency level when indexing in ElasticSearch NEST client在 ElasticSearch NEST 客户端中建立索引时设置一致性级别
【发布时间】:2018-02-02 09:53:59
【问题描述】:

在 ElasticSearch 文档中,它指定您可以在索引时设置一致性级别。

https://www.elastic.co/guide/en/elasticsearch/client/net-api/1.x/bulk.html

但是在最新版本的 NEST 客户端中,这已被删除(重大更改)。

是否有一种新的方法可以做到这一点,因为文档似乎不包含有关创建索引或索引数据的任何内容。文档仅包含查询和聚合文本(除非我弄错了)。

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/nest.html

我想将数据索引到具有“全部”一致性级别的索引中。

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    一致性由wait_for_active_shards控制,即added in 5.0.0(搜索wait_for_active_shards

    var indexResponse = client.Index(new Message { Content = "demo" }, i => i
        .WaitForActiveShards("all")
    );
    

    【讨论】:

    • 即使当我使用 wait_for_active_shards 时,我似乎仍然存在一致性漏洞。索引一条记录,然后尝试从 3 节点 ES 集群读回仍然可以让我一无所获。任何想法为什么会这样?
    • 所以这确实有效,但是我还需要将“刷新”设置为“真”或“等待”,以便在完成之前在所有分片上完成操作。谢谢
    • @WillM wait_for_active_shardsrefresh 做不同的事情;前者控制写入分片,即写入一致性,而后者控制这些更改何时实际写入新段中的磁盘。一般来说,在生产系统中,您应该尽量减少手动刷新,因为磁盘上要搜索的更多段不会像更少的段那样执行。
    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2016-12-28
    • 2016-07-27
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多