使用Vulcan弹性搜索EPiServer映射错误

时间:2018-03-08 09:45:27

标签: c# elasticsearch episerver

有没有人使用名为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

请帮忙!

1 个答案:

答案 0 :(得分:0)

感谢Dimitar,我使用的是ElasticSearch 5而不是2.在更改为版本2后,它运行了。