Я пытаюсь индексировать несколько баз данных в один индекс solr. Я читал solr wiki по нескольким источникам данных и пытался возиться с разными настройками, но не смог получить желаемого результата.
Моя конфигурация выглядит так:
<dataConfig>
<!-- Has 10000 items -->
<dataSource name="ds1" driver="org.h2.Driver" url="jdbc:h2:file:/path/to/first" />
<!-- Has ~7000 items -->
<dataSource name="ds2" driver="org.h2.Driver" url="jdbc:h2:file:/path/to/second" />
<document name="myDocName">
<entity name="firstEntity" rootEntity="true"
dataSource="ds1" query="SELECT * FROM BLAH"
transformer="my.Transformer" threads="4">
... <!-- field configuration here -->
</entity>
<entity name="secondEntity" rootEntity="true"
dataSource="ds2" query="SELECT * FROM BLAH"
transformer="my.Transformer" threads="4">
... <!-- field configuration here -->
</entity>
</document>
</dataConfig>
Сейчас мы работаем с тестовыми данными, поэтому я знаю, сколько записей есть в каждой базе данных, первая содержит ~ 7000, а вторая 10000. Когда я запускаю индексацию, я получаю информационное сообщение о том, что есть ~ 17000 добавлений:
INFO: {deleteByQuery=*:*,add=[5, 1, 2, 6, 7, 4, 8, 3, ... (17069 adds)],commit=} 0
Однако, когда я запускаю запрос * : * в веб-интерфейсе, я получаю только 10000 результатов (что точно соответствует количеству элементов в самой большой базе данных. Кажется, это говорит о том, что 7096 документов должны содержать сущности, а остальные только один.
Я попытался документировать элементы в файле конфигурации, но в результате был импортирован только один (вероятно, потому, что они имеют одинаковое имя, т.е. имя документа = "myDocName" было настроено одинаково для двух элементов документа).
На данный момент я застрял и не знаю, как правильно настроить это. Единственное, что я могу дополнительно придумать, это то, что мне нужно индексировать обе базы данных по отдельности, но рабочий процесс для этого мне тоже не совсем ясен. Любая помощь будет оценена по достоинству.
Обновление 1: я попытался дать обоим объектам разные имена (что в любом случае требуется в соответствии с документацией), но это приводит к следующему поведению. Сначала добавляются документы из первой БД, затем первые N существующих документов перезаписываются документами из второй БД, где N — количество записей во второй БД. Очевидно, это не то, что мне нужно, я хочу N дополнительных документов. Добавление второго элемента документа в конфигурацию тоже не работает.
Обновление 2: Согласно комментариям в этом отчете об ошибке: https://issues.apache.org/jira/browse/SOLR-895, корневые сущности в теге документа должны привести к созданию новых документов для этих сущностей. Это не то, что происходит для меня. Явная установка rootEntity="true" для каждого тега объекта также ничего не меняет. Результат по-прежнему таков, что после импорта у меня есть только 10000 документов вместо ожидаемых 17000.