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 调用指定索引。
我已经将 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 调用指定索引。