gpt4 book ai didi

elasticsearch - 使用 NEST 在 ElasticSearch 上批量更新

转载 作者:行者123 更新时间:2023-11-29 02:44:43 28 4
gpt4 key购买 nike

我正在尝试使用 NEST 替换 ES 上的文档。我看到以下选项可用。

选项#1:

var documents = new List<dynamic>();

`var blkOperations = documents.Select(doc => new BulkIndexOperation<T>`(doc)).Cast<IBulkOperation>().ToList();
var blkRequest = new BulkRequest()
{
Refresh = true,
Index = indexName,
Type = typeName,
Consistency = Consistency.One,
Operations = blkOperations
};
var response1 = _client.Raw.BulkAsync<T>(blkRequest);

选项#2:

var descriptor = new BulkDescriptor();
foreach (var eachDoc in document)
{
var doc = eachDoc;
descriptor.Index<T>(i => i
.Index(indexName)
.Type(typeName)
.Document(doc));
}
var response = await _client.Raw.BulkAsync<T>(descriptor);

那么谁能告诉我使用 NEST 进行批量更新或删除的哪个更好或任何其他选项?

最佳答案

您正在将批量请求传递给 ElasticsearchClient,即 ElasticClient.Raw,而您应该将其传递给 ElasticClient.BulkAsync()ElasticClient.Bulk() 可以接受批量请求类型。

使用BulkRequestBulkDescriptortwo different approaches that are offered by NEST for writing queries ;前者使用 Object Initializer Syntax 构建请求对象,而后者在 Fluent API 中使用以使用 lambda 表达式构建请求。

在您的示例中,BulkDescriptor 在流畅 API 的上下文之外使用,但是 BulkRequestBulkDescriptor 都实现了 IBulkRequest 因此可以传递给 ElasticClient.Bulk(IBulkRequest)

至于使用哪个,在这种情况下并不重要,所以您喜欢哪个都可以。

关于elasticsearch - 使用 NEST 在 ElasticSearch 上批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998090/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com