NEST - IndexMany 不索引我的对象

NEST - IndexMany doesn't index my objects

我已经将 NEST 用于 elasticsearch 一段时间了,直到现在我一直在使用常规 ElasticSearchClient.Index(...) 函数,但现在我想在批量操作中索引许多项目.

我找到了 IndexMany(...) 函数,但我肯定做错了什么,因为没有像使用常规 Index(...) 函数那样向弹性搜索数据库添加任何内容?

有人知道吗?

提前致谢!

如果您使用的是 C#,则应创建要插入的对象列表,然后调用 IndexMany 函数。

示例:

List<Business> businessList = new List<Business>();

#region Fill the business list
............................... 
#endregion

if (businessList.Count == 1000) // the size of the bulk.
{
     EsClient.IndexMany<Business>(businessList, IndexName);

     businessList.Clear();
}

最后再检查一次

if (businessList.Count > 0)
{
    EsClient.IndexMany<Business>(businessList, IndexName);
 }

我发现了问题。我必须在调用 IndexMany

时指定索引名称
 var res = ElasticClient.CreateIndex("pages", i => i.Mappings(m => m.Map<ESPageViewModel>(mm => mm.AutoMap())));

                var page = new ESPageViewModel
                {
                    Id = dbPage.Id,
                    PageId = dbPage.PageId,
                    Name = dbPage.Name,
                    Options = pageTags,
                    CustomerCategoryId = saveTagOptions.CustomerCategoryId,
                    Link = dbPage.Link,
                    Price = dbPage.Price
                };

                var pages = new List<ESPageViewModel>() { page };

                var res2 = ElasticClient.IndexManyAsync<ESPageViewModel>(pages, "pages");

这按预期工作。我想我可以在配置中指定一个默认索引名称,以避免为 IndexMany 调用指定索引。