Я пытаюсь добавить 100k продукты в elasticsearch, но когда я пытаюсь я получаю: { "Не удалось выполнить проверку: 1: без добавления каких-либо запросов;"}Массовая вставка в ElasticSearch с NEST
Мой код:
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: никаких запросов не добавлено ;?
- IndexId - это мой идентификатор продукта. Как я могу сказать Elasticsearch, чтобы использовать этот идентификатор? Или я должен указать идентификатор?
почему не использовать IndexMany? –
thanx. У меня теперь есть: SPl.Select (I => Client.IndexMany (I, "products")) И он работает. Но: IndexId - это мой идентификатор продукта. Как я могу сказать Elasticsearch, чтобы использовать этот идентификатор? Или я должен указать идентификатор? – mrcode
Переименуйте поле IndexId в Id и elasticsearch, используя это в качестве идентификатора документа. – Manolis