在巢/弹性搜索中创建索引从1.x升级后的X

本文关键字:索引 搜索 创建 在巢 | 更新日期: 2023-09-27 18:16:19

我将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

我认为合并策略和获取警告设置是我从弹性搜索"入门指南"中得到的。"merge_factor"默认为10,所以这无关紧要,我猜"search.slowlog.threshold.fetch"。"警告"是一个日志记录。

我的问题是:

  1. 我可以离开我的索引创建在我的新代码吗?
  2. 如果我想要,我如何设置它们?

在巢/弹性搜索中创建索引从1.x升级后的X

索引创建时的设置已经得到了改进,为索引创建时允许的设置提供了流畅的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")
    )
);

但是需要注意的是在Elasticsearch 2.0+中删除了merge.policy.merge_factor。您可以在

上找到支持的设置。
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
  }
}