首页 > 解决方案 > Sitecore 自定义索引 - WARN 无法映射索引文档(字段:_uniqueid

问题描述

我已经使用 FlatDataCrawler 在 Sitecore 中创建了我的自定义索引。

索引已创建,我可以在 Solr 中查看我的文档。

问题是,每当我试图在我的代码中获取这些文档时,我都会看到如下异常:

Object reference not set to an instance of an object.

在 sitecore 日志文件中,我看到了这个警告:

ManagedPoolThread #4 14:29:09 INFO  Solr Query - ?q=*:*&rows=1000000&fq=_indexname:(products_index)&wt=xml
ManagedPoolThread #4 14:29:09 WARN  Could not map index document (field: _uniqueid; Value: fae308d2-233f-4f7f-a4fd-9d880e42ff13) - Object reference not set to an instance of an object.

这是我的索引配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:search="http://www.sitecore.net/xmlconfig/search/">
    <sitecore role:require="Standalone or ContentManagement" search:require="solr">
        <contentSearch>
            <configuration type="Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch">
                <indexes hint="list:AddIndex">
                    <index id="products_index" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
                        <param desc="name">$(id)</param>
                        <param desc="core">$(id)</param>
                        <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
                        <configuration ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration">
                            <documentOptions type="Sitecore.ContentSearch.SolrProvider.SolrDocumentBuilderOptions, Sitecore.ContentSearch.SolrProvider">
                                <indexAllFields>false</indexAllFields>
                            </documentOptions>
                        </configuration>
                        <strategies hint="list:AddStrategy">
                            <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/manual" />
                        </strategies>
                        <locations hint="list:AddCrawler">
                            <crawler type="Feature.ProductsIndex.Crawlers.CustomOrderCrawler, Feature.ProductsIndex" />
                        </locations>
                    </index>
                </indexes>
            </configuration>
        </contentSearch>
    </sitecore>
</configuration>

这是我的代码:

using (var searchContext = ContentSearchManager.GetIndex("products_index").CreateSearchContext()) 
{
    int count = searchContext.GetQueryable<SearchResultItem>().Count(); //This works        
    var results = searchContext.GetQueryable<SearchResultItem>().ToList(); //Exception here!    
}

标签: linqsolrsitecore9

解决方案


看看你的模式文件,如果你有

<uniqueKey>_uniqueid</uniqueKey>
<field name="_uniqueid" type="string" indexed="true" required="true" stored="true"/>

如果不按照此链接填充 solr 架构,然后重新启动 solr 服务,然后尝试重建索引


推荐阅读