Я пытаюсь индексировать вложенные данные с помощью solr из существующей базы данных sql. БД имеет следующую структуру: https://dev.mysql.com/doc/employee/en/images/employees-schema.png
Мой db-schema.xml выглядит следующим образом:
<document>
<entity name="employees"
rootEntity="true"
query="select emp_no as 'id', first_name, last_name from employees limit 10;">
<field column="id" />
<field column="first_name" />
<field column="last_name" />
<entity child="true"
name="dept_emp"
query="select emp_no, dept_no from dept_emp where dept_emp.emp_no=${employees.id}">
<field column="dept_no" name='dept_no'/>
</entity>
</entity>
</document>
и моя управляемая-схема.xml для solr такова:
<field name="first_name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="last_name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="dept_no" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
Проблема в том, что я получаю эту ошибку:
org.apache.solr.common.SolrException: [doc=null] missing required field: dept_no
Даже если я удалю
<field name="dept_no" type="string" indexed="true" stored="true" required="true" multiValued="false" />
Я получаю сообщение об ошибке: last_name отсутствует. Если я удаляю вложенный объект, все работает нормально. Любая идея, почему это происходит?