gpt4 book ai didi

c# - 使用 NEST 批量插入 ElasticSearch

转载 作者:太空狗 更新时间:2023-10-29 20:23:40 30 4
gpt4 key购买 nike

我尝试将 100k 产品添加到 elasticsearch,但是当我尝试时我得到:{“验证失败:1:未添加请求;”}

我的代码:

        var Node = new Uri("......");
var ConnectionPool = new SniffingConnectionPool(new[] { Node });
var Config = new ConnectionConfiguration(ConnectionPool)
.SniffOnConnectionFault(false)
.SniffOnStartup(false)
.SniffLifeSpan(TimeSpan.FromMinutes(10));
var Client = new ElasticsearchClient(Config);

var AllProducts = Product.GetProducts();
var SPl = AllProducts.Split(100); // Split into 100 collections/requests

var COll = new List<ElasticsearchResponse<DynamicDictionary>>();

foreach (var I in SPl)
{
var Descriptor = new BulkDescriptor();

foreach (var Product in I)
{
Descriptor.Index<Product>(op => op.Document(Product));
}

COll.Add(Client.Bulk(Descriptor));
}

AllProducts 包含此对象的列表:

public class Product
{
public int AffiliateNr { get; set; }
public string AffiliateProductId { get; set; }
public int BrandNr { get; set; }
public string Currency { get; set; }
public string IndexId { get; set; }
public decimal Price { get; set; }
public long ProductNr { get; set; }
public string Title { get; set; }
}

所以,

  1. 在哪里可以设置索引的名称?
  2. 为什么我得到验证失败:1:没有添加请求;?
  3. IndexId 是我的产品 ID。我如何告诉 Elasticsearch 使用这个 id?或者我必须指定一个 ID?

最佳答案

引用您之前的问题,您可以使用 IndexMany 对数据进行索引。现在根据您在评论中的问题,您可以指定 Elasticsearch 将使用的 ID。请参阅下面的示例。

  ElasticType(IdProperty = "<fieldName>")]
public class ClassName
{

如果您不想为 Elasticsearch 指定任何 Id,请创建一个虚拟字段 dummyId(nullable) 并将其放入“IdProperty”。如果它为 null,Elastic search 将自动为其分配值。

编辑:从2.3开始,它的

[ElasticsearchType(IdProperty = "<fieldName>")]

关于c# - 使用 NEST 批量插入 ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642348/

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