tôi cố gắng thêm 100k sản phẩm để elasticsearch, nhưng khi tôi cố gắng tôi nhận được: { "Validation Không: 1: không có yêu cầu bổ sung;"}chèn hàng loạt để ElasticSearch với NEST
Mã của tôi:
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 chứa một danh sách các đối tượng này:
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; }
}
Vì vậy,
- Tôi có thể đặt tên chỉ mục ở đâu?
- Tại sao tôi nhận được, Xác thực không thành công: 1: không có yêu cầu nào được thêm ;?
- IndexId là id của tôi cho sản phẩm. Làm cách nào để tôi yêu cầu Elasticsearch sử dụng id này? Hoặc tôi phải chỉ định một id?
tại sao không sử dụng IndexMany? –
thanx. Tôi hiện có: SPl.Select (I => Client.IndexMany (I, "products")) Và nó hoạt động. Nhưng: IndexId là id của tôi cho sản phẩm. Làm cách nào để tôi yêu cầu Elasticsearch sử dụng id này? Hoặc tôi phải chỉ định một id? – mrcode
Đổi tên trường IndexId thành Id và elasticsearch sẽ sử dụng trường này theo quy ước làm id của tài liệu. – Manolis