【问题标题】:Mapping errors using Vulcan elastic search for EPiServer使用 EPiServer 的 Vulcan 弹性搜索映射错误
【发布时间】:2018-03-28 23:44:17
【问题描述】:

有没有人使用 EPiServer 的弹性搜索客户端 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)中并设置我的 web.config 设置和索引作业报告“作业已完成。请刷新页面以查看状态。”运行历史记录显示“Vulcan 在 1 个索引器中成功索引了 100 个项目!”。

但是,当我查看“\App_Data\EPiServerErrors.log”文件时,我看到了大量错误,例如:

错误 TcbInternetSolutions.Vulcan.Core.Implementation.VulcanClient:Vulcan 无法使用内容链接 10 为语言 en 编制索引内容:System.Exception:无效的 NEST 响应构建自对 PUT 的不成功的低级调用:/customername_en/EPiServer.Core .BlockData/10 此 API 调用的审计跟踪: - [1] 错误响应:节点:http://localhost:9200/ 接受:00:00:00.4026489 ServerError:ServerError:400Type:mapper_parsing_exception 原因:“未能找到为 [contentAssetsID] 解析的类型 [string]” OriginalException:System.Net.WebException:远程服务器返回错误:(400)错误请求。 在 System.Net.HttpWebRequest.GetResponse() 在 C:\Projects\elastic\net-2\src\Elasticsearch.Net\Connection\HttpConnection.cs:line 163 中的 Elasticsearch.Net.HttpConnection.Request[TReturn](RequestData requestData) 处

看起来它无法在索引“customername_en”中索引类型“EPiServer.Core.BlockData”,因为当“[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

请帮忙!

【问题讨论】:

  • 您使用的是哪个版本的 Elastic Search?

标签: c# elasticsearch episerver


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2016-06-20
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多