将项目编入索引时,它会有时失败并给出
The remote server returned an error: (504) Gateway Timeout. [The remote server returned an error: (504) Gateway Timeout.]
索引逻辑如下所示
var client = EPiServer.Find.Framework.SearchClient.Instance;
List<ItemModel> items = getItems(); // Get more than 1000 items
List<ItemModel> tempItems = new List<ItemModel>();
//Index 50 items at a time
foreach(var item in items)
{
tempItems.Add(item);
if (tempItems.Count == 50)
{
client.Index(tempItems);
tempItems.Clear();
}
}
什么原因导致这种情况发生?
注意:上面提到的 ItemModel
是一个自定义模型,未实现接口(例如 IContent
)。 items
是 ItemModel
对象的列表。
其他信息:
EPiServer.Find.Framework版本13.0.1
EPiServer.CMS.Core版本11.9.2
答案 0 :(得分:0)
我一直认为{<1>}在“查找”中操作数据时有些粗略,据我所知(但必须对此进行检查),SearchClient在请求限制下服从Episerver Find的功能,当在循环中进行较大的操作时,它往往会超时。
相反,请使用SearchClient
,即
ContentIndexer
据我所知,这是从索引中删除内容的最安全的方法。