执行批量操作时索引动态设置



我正在尝试找到一种方法,在执行BulkAll操作时为我的索引指定副本数量,我知道如何在使用CreateIndex:创建单个索引时做到这一点

var createIndexResponse = client.CreateIndex("index-name", c => c
// settings for the index
.Settings(s => s
.NumberOfReplicas(1)
)

第二个参数包含CreateIndexDescriptor,它包含:

public CreateIndexDescriptor Settings(Func<IndexSettingsDescriptor, IPromise<IIndexSettings>> selector);

我查看了BulkIndexDescriptor,但找不到设置选项,所以在执行批量操作时如何指定副本数?

这是我当前的代码:

var bulkAllObservable = elasticClient.BulkAll(accessLogs, b => b
.Index(null)
.MaxDegreeOfParallelism(Environment.ProcessorCount)
.BackOffRetries(2)
.ContinueAfterDroppedDocuments(true)
.BufferToBulk((descriptor, buffer) =>
{
foreach (var al in buffer)
{
descriptor.Index<object>(bi => bi
.Document(al)
.Index($"my-log-{al.Properties.UserId}")
.Id($"{al.Properties.Id}")
);
}
})

我正在使用Nest 7.10.0

假设您依赖于创建的索引,而该索引不存在,并且文档已编入索引,则可以使用索引模板模板创建索引时要使用的设置

var client = new ElasticClient();
var putTemplateResponse = client.Indices.PutTemplate("my-log", t => t
.IndexPatterns("my-log-*")
.Settings(s => s
.NumberOfReplicas(1)
)
);

现在,当创建一个名称与索引模式"my-log-*"匹配的索引时,它将使用一个副本创建。

最新更新