Мой источник данных Solr является базой данных SQL, где первичный ключ является составным (т.е. это - два поля).
Это хорошо для моего основного DIH query
, Я просто связываю поля, и это становится моим первичным ключом Solr. Однако неясно из документации, как я записал бы запрос импорта дельты для поддержки этого.
Документация предлагает, чтобы мне были нужны два запроса - один для нахождения первичного ключа измененных строк, и другой к затем на самом деле получает отдельные документы, соответствующие каждому из тех ключей. Нет никакого примера, показывающего это для первичных ключей все же.
Идеально я не хочу тех двух отдельных запросов вообще, это создало бы меньше нагрузки для базы данных, если бы те два запроса были просто объединены таким образом что единственная разница между query
и deltaQuery
WHERE
пункт, который фильтрует на основе last_changed
.
Так, если мое основное query
:
SELECT key1 || key2 as pk FROM table
Что было бы соответствующее deltaQuery
(и/или deltaImportQuery
) быть похожими?
Я пытался просто добавить WHERE
пункт, но после запроса работал, я получил предупреждение о пропавших без вести deltaImportQuery
и затем исключение нулевого указателя.
Есть два запроса для DeltaImport. Первый(deltaQuery) предназначен для определения, что индексировать. Например, в нем мы можем определить, какой ID нам нужен для индексирования. Второй - для определения данных по этим идентификаторам. Посмотрите на мой пример, надеюсь, он вам поможет:
<entity name="address" pk="address_id" query="SELECT * FROM address a" deltaImportQuery="SELECT * FROM address a where a.address_id > ${dataimporter.delta.id}"
deltaQuery="select address_id as id from address where address_id=101010">
Важной частью deltaImportQuery является ${dataimporter.delta.id}. Вот как мы устанавливаем наш id из deltaQuery в deltaImportQuery.
.