有没有人使用名为Vulcan的EPiServer弹性搜索客户端? (https://github.com/TCB-Internet-Solutions/vulcan)
根据所有说法(包括这个写得非常好的https://blog.wsol.com/getting-started-using-vulcan-search-in-episerver),它应该像安装NuGet包一样简单" TcbInternetSolutions.Vulcan.Core"从EPiServer NuGet提要中,添加web.config设置,并运行预定作业以索引数据。
我将NuGet包(版本3.0.1)安装到我的EPiServer项目(版本11.2.1)中并设置我的web.config设置和索引作业报告"作业已完成。请刷新页面以查看状态。"运行历史记录显示" Vulcan成功为1个索引器索引了100个项目!"。
然而,当我在" \ App_Data \ EPiServerErrors.log"文件我看到了大量的错误,例如:
错误TcbInternetSolutions.Vulcan.Core.Implementation.VulcanClient:Vulcan无法使用语言en的内容链接10索引内容:System.Exception:从PUT上的不成功低级别调用构建的无效NEST响应:/customername_en/EPiServer.Core .BlockData / 10 此API调用的审计跟踪: - [1] BadResponse:节点:http://localhost:9200/ Took:00:00:00.4026489 ServerError:ServerError:400Type:mapper_parsing_exception原因:"找不到[contentAssetsID]"的解析类型[string] OriginalException:System.Net.WebException:远程服务器返回错误:(400)错误请求。 在System.Net.HttpWebRequest.GetResponse() 在Elasticsearch.Net.HttpConnection.Request [TReturn](RequestData requestData)在C:\ Projects \ elastic \ net-2 \ src \ Elasticsearch.Net \ Connection \ HttpConnection.cs:第163行
看起来它没有索引类型" EPiServer.Core.BlockData"在索引" customername_en"因为当" [contentAssetsID]"时,所有内容都默认映射到字符串。应该是一个数字。所以我尝试添加一个初始化类来设置到AutoMap的映射:
[ModuleDependency(typeof(ServiceContainerInitialization))]
public class SearchInitialization : IConfigurableModule
{
public void ConfigureContainer(ServiceConfigurationContext context)
{
// Nothing to do
}
public void Initialize(InitializationEngine context)
{
var vh = ServiceLocator.Current.GetInstance<VulcanHandler>();
var vhClient = vh.GetClient(new System.Globalization.CultureInfo("en"));
var res = vhClient.Map<EPiServer.Core.BlockData>(m => m.AutoMap());
}
public void Uninitialize(InitializationEngine context)
{
// Nothing to do
}
}
&#34; RES&#34;返回成功的响应但仍然出现错误。
此处有完整错误:https://pastebin.com/T7NPgZj9
请帮忙!
答案 0 :(得分:0)
感谢Dimitar,我使用的是ElasticSearch 5而不是2.在更改为版本2后,它运行了。