我已經使用NEST進行elasticsearch一段時間了,直到現在我已經使用了常規的ElasticSearchClient.Index(...)函數,但現在我想索引很多批量操作中的項目。NEST - IndexMany不索引我的對象
我發現了IndexMany(...)函數,但是我必須做一些錯誤的事情,因爲它沒有像常規Index(...)函數那樣添加到彈性搜索數據庫中?
有沒有人有任何想法?
在此先感謝!
我已經使用NEST進行elasticsearch一段時間了,直到現在我已經使用了常規的ElasticSearchClient.Index(...)函數,但現在我想索引很多批量操作中的項目。NEST - IndexMany不索引我的對象
我發現了IndexMany(...)函數,但是我必須做一些錯誤的事情,因爲它沒有像常規Index(...)函數那樣添加到彈性搜索數據庫中?
有沒有人有任何想法?
在此先感謝!
我發現這個問題。我必須在索引中指定索引名稱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調用指定索引。
如果您使用的是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);
}
你想同時索引多少個「東西」?大小是多少? HTTP內容長度限制實施的大小限制約爲100MB。 –
對於我的測試,我只使用2個項目,並沒有一個在我的索引中結束。我知道限制:)而且我也沒有從IndexMany(...)函數得到任何錯誤:/ –
響應中的'.DebugInformation'屬性是什麼意思? –