Проблема в том, что когда мы отлаживаем импорт данных, он говорит, что значения документа должны измениться, но тогда значение не находится в запросе.
Это результат импорта данных.
{
"responseHeader": {
"status": 0,
"QTime": 0
},
"initArgs": [
"defaults",
[
"config",
"esp-config.xml"
]
],
"command": "status",
"status": "idle",
"importResponse": "",
"statusMessages": {
"Total Requests made to DataSource": "15",
"Total Rows Fetched": "27",
"Total Documents Processed": "1",
"Total Documents Skipped": "0",
"Full Dump Started": "2018-03-12 13:24:41",
"": "Indexing completed. Added/Updated: 1 documents. Deleted 0 documents.",
"Committed": "2018-03-12 13:24:42",
"Optimized": "2018-03-12 13:24:42",
"Time taken": "0:0:1.467"
}
}
Это результат работы dataimpor-debug (изменен, чтобы не отображать разумные данные).
{
"responseHeader": {
"status": 0,
"QTime": 1507
},
"initArgs": [
"defaults",
[
"config",
"esp-config.xml"
]
],
"command": "full-import",
"mode": "debug",
"documents": [
{
.... Some fields with the values document should have ....
"_version_": [
1594749753815466000
],
"_root_": [
"E40004178"
]
}
],
"verbose-output": [
"entity:esp",
[
"document#1",
[
"query",
"Some query",
"time-taken",
"0:0:0.422",
null,
"----------- row #1-------------",
... Some more data ...
"status": "idle",
"importResponse": "",
"statusMessages": {
"Total Requests made to DataSource": "15",
"Total Rows Fetched": "27",
"Total Documents Processed": "1",
"Total Documents Skipped": "0",
"Full Dump Started": "2018-03-12 13:24:41",
"": "Indexing completed. Added/Updated: 1 documents. Deleted 0 documents.",
"Committed": "2018-03-12 13:24:42",
"Optimized": "2018-03-12 13:24:42",
"Time taken": "0:0:1.467"
}
}
DIH на solrconfig.xml
<requestHandler name = "/dataimport" class = "org.apache.solr.handler.dataimport.DataImportHandler">
<lst name = "defaults">
<str name = "config">esp-config.xml</str>
</lst>
</requestHandler>
Файл конфигурации Dataimport
<dataConfig>
<dataSource name = "TDatasource" driver = "com.ibm.db2.jcc.DB2Driver" url = "${ta.datasource.url}"
user = "${ta.datasource.user}" password = "${ta.datasource.pass}"/>
<document>
<entity name = "esp" pk = "ID" transformer = "TemplateTransformer"
query = "SELECT * FROM ESP e
WHERE ('${dataimporter.request.idP}' != '' AND to_char(e.id) = '${dataimporter.request.idP}') OR
('${dataimporter.request.idP}' = '' AND ('${dataimporter.request.clean}' != 'false'
OR e.VERSION > '${dataimporter.last_index_time}'))">
...Some fields and child documents...
</entity>
<entity name = "ab" pk = "ID" transformer = "TemplateTransformer"
query = "SELECT * FROM AB a
WHERE ('${dataimporter.request.idP}' != '' AND to_char(a.id) = '${dataimporter.request.idP}')
OR ('${dataimporter.request.idP}' = '' AND ('${dataimporter.request.clean}' != 'false' OR a.VERSION > '${dataimporter.last_index_time}'))">
...Some other data for this but without child documents...
</entity>
</document>
Обновлено: Solr config autoCommit и autoSoftCommit
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
</autoSoftCommit>
Проблема в том, что при поиске того же документа по идентификатору он возвращает старый номер версии вместо нового 1594749753815466000 примера.
Единственное решение на данный момент - сделать запрос на удаление документа по идентификатору и снова запустить индекс.
Мы попытались перезапустить все узлы, потому что, возможно, проблема была в кеше или чем-то подобном, но старые значения сохраняются.
Версия Solr es 5.3.1
в противном случае это звучит как неправильная конфигурация обработчика импорта данных. Вы можете это вставить?
Привет @D_K, да, если мы сможем решить эту проблему, я собираюсь отредактировать сообщение и прошить конфигурацию dih.
Не совсем уверен, но когда вы перезапустите экземпляр Solr, он сбросит кеш. Вы также можете попробовать перезагрузить коллекцию или ядра со страницы администратора. Если вы находитесь в SolrCloud, вам следует повторно загрузить схему в ZooKeeper, используя скрипт zkclient в облачных скриптах.
Также пробовал перезагрузку сборников и ядер. Зачем мне перезагружать информацию о схеме, если она не изменилась?
@ MatìasFernàndez, какие у вас есть настройки автоматической фиксации?
а также видите ли вы какие-либо ошибки в журнале?
Можно увидеть любую ошибку, единственное, что я вижу - это отладка с информацией, которую я показываю в сообщении.
@ MatìasFernàndez, можете ли вы опубликовать разделы <autoCommit> и <autoSoftCommit> в solrconfig.xml?
Конечно @D_K, есть
@ MatìasFernàndez это -1 для мягкой фиксации - означает фиксацию как можно скорее? Как вы определили это значение?
Это конфигурация по умолчанию.
какая у вас операционная система? Можно ли обновить solr до последней версии 7.x?