【问题标题】:CreateIndex in Nest / Elastic Search 2.x after upgrade from 1.x从 1.x 升级后 Nest / Elastic Search 2.x 中的 CreateIndex
【发布时间】:2016-11-04 20:19:28
【问题描述】:

我将 Nest 和 Elastic Search NuGet 包从 1.7.1 升级到 2.4.6。一切似乎都正常,但我担心的一件事是我在哪里创建索引。

我曾经在旧的 1.x 世界中设置了两个设置,但我不知道如何在 2.x 世界中设置。创建索引从此开始:

ixSettings.NumberOfReplicas = 1;
ixSettings.NumberOfShards = 5;
ixSettings.Settings.Add("merge.policy.merge_factor", "10");
ixSettings.Settings.Add("search.slowlog.threshold.fetch.warn", "1s");

EsClient.CreateIndex(c => c
    .Index(ES_Index)
    .InitializeUsing(ixSettings)
);

到这里:

EsClient.CreateIndex(ES_Index, c => c
    .Settings(s => s
        .NumberOfReplicas(1)
        .NumberOfShards(5)));

var mapResponse = EsClient.Map<WebPage>(m => m.AutoMap()); //apply the index mapping

我认为合并策略和获取警告设置是我从 Elastic Search“入门指南”中获得的。 “merge_factor”默认为 10,所以没关系,我猜“search.slowlog.threshold.fetch.warn”是一个日志记录。

我的问题是:

  1. 我可以将这些从我的新代码中的索引创建中删除吗?
  2. 如果需要,如何设置?

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    索引创建时的设置已得到改进,为索引创建时允许的设置提供流畅的 API 和对象初始化器语法。

    您可以使用.Setting() 设置任何键/值

    client.CreateIndex("index-name", c => c
        .Settings(s => s
            .NumberOfReplicas(1)
            .NumberOfShards(5)
            .Setting("merge.policy.merge_factor", "10")
            .Setting("search.slowlog.threshold.fetch.warn", "1s")
        )
    );
    

    但需要注意的是merge.policy.merge_factor is removed from Elasticsearch 2.0+。您可以找到支持的设置

    client.CreateIndex("index-name", c => c
        .Settings(s => s
            .NumberOfReplicas(1)
            .NumberOfShards(5)
            .Merge(m => m
                .Policy(mp => mp
                    . // See which settings are available here
                )
            )
        )
    );
    

    同样,search.slowlog.threshold.fetch.warn 可以设置为

    client.CreateIndex("index-name", c => c
        .Settings(s => s
            .NumberOfReplicas(1)
            .NumberOfShards(5)
            .SlowLog(sl => sl
                .Search(ssl => ssl
                    .Fetch(f => f
                        .ThresholdWarn("1s")
                    )
                )
            )
        )
    );
    

    产生以下请求:

    PUT http://localhost:9200/index-name 
    {
      "settings": {
        "index.number_of_replicas": 1,
        "index.search.slowlog.threshold.fetch.warn": "1s",
        "index.number_of_shards": 5
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多