Ошибка разбора запроса Apache Solr во время импорта данных при использовании SolrEntityProcessor

Когда я пытаюсь выполнить импорт ядра schooLocationDetails solr, я получаю сообщение об ошибке ниже. Использование Solr 5.3.1

Исключение при обработке: документ о возможностях: SolrInputDocument (поля: []): org.apache.solr.handler.dataimport.DataImportHandlerException: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: ошибка с сервера по адресу http:/ /:‹solr_pwd›@‹solr_server›:‹solr_port›/solr/locationCore: org.apache.solr.search.SyntaxError: Не удается разобрать «locationId:»: встречается в строке 1, столбце 22.

Ниже приведен файл data-config.xml для ядра solr schooLocationDetails.

<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>

person user_mes    schedule 11.08.2020    source источник
comment
Значение school.location пусто. Почему это так, трудно сказать без вашего полного файла, но я предполагаю, что поскольку у вас нет младшего <entity> в качестве дочернего элемента другого объекта, у него нет доступа к значениям, полученным в вашем основном запросе.   -  person MatsLindh    schedule 11.08.2020
comment
Привет, только что обновил код .. он был плохо отформатирован   -  person user_mes    schedule 11.08.2020
comment
Проблема, о которой я упоминал, все еще существует — я не уверен, что вы сможете получить доступ к значению из другого объекта, когда ваш SolrEntityProcessor не является подобъектом того, на который вы хотите сослаться. Вы можете добавить преобразователь журнала к своей сущности, чтобы регистрировать доступные данные (и, похоже, у вас определен неиспользуемый преобразователь регулярного выражения).   -  person MatsLindh    schedule 12.08.2020
comment
Спасибо МатсЛинд. Это решено после того, как я добавил SolrEntityProcessor в качестве дочернего объекта   -  person user_mes    schedule 12.08.2020


Ответы (1)


Вы должны добавить объект, ссылающийся на значение внутри другого объекта. Когда это два отдельных объекта, они не могут ссылаться друг на друга (вместо этого они будут импортированы друг за другом).

<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>
person MatsLindh    schedule 12.08.2020