是否有人使用EPiServer的elasticsearch客户端,名为Vulcan?(https://github.com/TCB-Internet-Solutions/vulcan)
通过所有的帐户(包括这个写得很好的帐户:https://blog.wsol.com/getting-started-using-vulcan-search-in-episerver),它应该像从EPiServer NuGet提要安装NuGet包"TcbInternetSolutions.Vulcan.Core“一样简单,添加web.config设置,并运行预定的作业来索引数据。
我将NuGet包(3.0.1版)安装到我的EPiServer项目(11.2.1版)中,并设置了EPiServer设置和索引作业报告“作业已经完成。请刷新页面以查看状态”。运行历史记录显示"Vulcan成功地在一个索引器中索引了100个项目!“。
但是,当我锁定"\App_Data\EPiServerErrors.log“文件时,我会看到大量错误,如:
错误TcbInternetSolutions.Vulcan.Core.Implementation.VulcanClient: Vulcan无法索引内容链接10的内容内容,用于en: System.Exception:无效的嵌套响应,它是在PUT: /customername_en/EPiServer.Core.BlockData/10 BadResponse: Node:http://localhost:9200/的低级别调用不成功生成的,原因是:-1 BadResponse:Node:http://localhost:9200/接受了: 00:00:00.4026489 ServerError: ServerError: 400Type: mapper_parsing_exception原因:“未能找到contentAssetsID的类型解析字符串”OriginalException: System.Net.WebException:远程服务器返回错误:(400)坏请求。在Elasticsearch.Net.HttpConnection.RequestTReturn的C:\Projects\elastic\net-2\src\Elasticsearch.Net\Connection\HttpConnection.cs:line 163的System.Net.HttpWebRequest.GetResponse()
它似乎未能索引索引"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
}
}"res“返回一个成功的响应,但错误仍然发生。
这里的全部错误:https://pastebin.com/T7NPgZj9
请帮帮我!
发布于 2018-03-28 15:44:17
多亏了Dimitar,我用的是ElasticSearch 5而不是2。在更改到版本2之后,它就起作用了。
https://stackoverflow.com/questions/49169991
复制相似问题