使用SolrEntityProcessor时在数据导入期间发生Apache Solr查询解析错误

问题描述

当我尝试导入schooLocationDetails solr核心时,出现以下错误。使用Solr 5.3.1

处理中的异常:机会详细文档:SolrInputDocument(fields []):org.apache.solr.handler.dataimport.dataimporthandlerException:org.apache.solr.client.solrj.impl.HttpSolrClient $ RemoteSolrException:服务器错误http://: @ / solr / locationCore:org.apache.solr.search.SyntaxError:无法解析“ locationId:”:在第1行第22列遇到“”。 >

下面是我的Solr核心schooLocationDetails的data-config.xml。

<dataConfig>
<document>
<entity name="school" dataSource="datasource" query="select * from school_table" transformer="RegexTransformer">
<field column="recordKey" name="recordKey" />
<field column="name" name="name" /> 
<field column="location" name="location" /> 
<field column="title" name="title" />   
</entity>
<entity name="locationDetail" processor="SolrEntityProcessor" url="http://<solr-user>:<solr_pwd>@<solr_server>:<solr_port>/solr/locationCore" query="locationId:${school.location}" 
fl="*,old_version:_version_">

<field column="locationId" name="locationId" />
<field column="city" name="city" />
<field column="state" name="state" />
<field column="old_version" name="old_version" />
</entity>       
</document>  
</dataConfig>

解决方法

您必须在其他实体内添加引用值 的实体。当它们是两个单独的实体时,它们不能互相引用值(而是将它们互相导入)。

<entity name="school" dataSource="datasource" query="select * from school_table" transformer="RegexTransformer">
    <field column="recordKey" name="recordKey" />
    <field column="name" name="name" /> 
    <field column="location" name="location" /> 
    <field column="title" name="title" />   

    <entity name="locationDetail" processor="SolrEntityProcessor" url="" query="locationId:${school.location}" 
  fl="*,old_version:_version_">
        <field column="locationId" name="locationId" />
        <field column="city" name="city" />
        <field column="state" name="state" />
        <field column="old_version" name="old_version" />
    </entity> 
</entity>