2016-10-31 5 views
7

Я создал два хранилища данных Spring-Data elasticsearch для двух документов, связанных с родителем/дочерним элементом. Вы можете просмотреть классы документов для обоих из них: here.Spring Data Elasticsearch Родительские/дочерние репозитории документов/ошибка выполнения теста

Хранилищ становятся конкретизируются в XML с помощью элемента репозиториев как этого

<elasticsearch:repositories base-package="com.acme.repositories" /> 

Вы можете найти полный пример вопроса в this GitHub репо. Мой исходный код основан на тестах, найденных в spring-data-elasticsearch repo. Исходный код состоит из двух классов домена (родительский, дочерний), связанных репозиториев, файлов конфигурации xml и unit test class.

Clone и запустить mvn test, бросают java.lang.IllegalArgumentException: can't add a _parent field that points to an already existing type, that isn't already a parent

Кажется, что этот родитель/потомок производит эластичное исключение поиска, которое ясно в Elasticsearch side, но я не знаю, как предотвратить это происходит при выполнении Spring Проверка данных.

ответ

0

Если вы все еще ищете ответ, я решил это, установив createIndex = false в @Document родителя. И создать это вручную в бобах

  elasticSearchTemplate.createIndex(Parent.class); 
      elasticSearchTemplate.putMapping(parent.class); 
      elasticSearchTemplate.createIndex(Child1.class); 
      elasticSearchTemplate.createIndex(Child2.class); 

Это должно создать родительский первый, а затем связанные с ними детей. Также очистите документ перед обновлением сопоставления.