Страница wiki, http://wiki.apache.org/solr/DataImportHandler объясняет, как индексировать данные с помощью DataImportHandler. Но в этом примере используется команда для запуска операции импорта. Как я могу запланировать задание, чтобы сделать это на регулярной основе? C
Как я могу запланировать импорт данных в Solr
Ответ 1
В UNIX/Linux cron jobs являются вашими друзьями! В Windows есть Task Scheduler.
UPDATE
Чтобы сделать это из кода Java, так как это простой запрос GET, вы можете использовать библиотеку этот учебник по использованию метода GetMethod.
Если вам необходимо программно отправлять другие запросы в Solr, вы, вероятно, должны использовать библиотеку Solrj. Он позволяет отправлять все базовые команды в Solr ant, он может быть настроен для доступа к любым обработчикам Solr:
CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr");
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("command", "full-import");
QueryRequest request = new QueryRequest(params);
request.setPath("/dataimport");
server.request(request);
Ответ 2
Я смог заставить его работать после следующих шагов:
-
Создание классов ApplicationListener, HTTPPostScheduler и SolrDataImportProperties (исходный код, указанный в http://wiki.apache.org/solr/DataImportHandler#Scheduling). Я считаю, что эти классы еще не были совершены.
-
Добавьте следующий слушатель в файл Solr web.xml:
<listener> <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class> </listener>
-
Настройте dataimport.properties в соответствии с инструкциями на странице wiki.
Ответ 3
просто добавьте эту строку в свой crontab с помощью команды crontab -e
:
0,30 * * * * /usr/bin/wget http://<solr_host>:8983/solr/<core_name>/dataimport?command=full-import
Это будет полный импорт каждые 30 минут. Замените <solr_host>
и <core_name>
своей конфигурацией
Ответ 4
Там есть свежий патч от Esteve Fernandez, который заставляет все работать над Unix/Linux: https://issues.apache.org/jira/browse/SOLR-2305
@Eldo Если вам понадобится дополнительная помощь в создании собственного JAR, просто напишите здесь вопрос...
Ответ 5
Мы можем использовать Quartz для этого, что похоже на crontab на linux. Но в принципе, TimerTask, встроенный в jdk, достаточно для вас.
Ответ 6
Это немного устарело, но я создал приложение и службу Windows WPF, чтобы справиться с этим, поскольку использование заданий CRON и планировщика заданий немного сложно поддерживать, если у вас много ядер/сред.
https://github.com/systemidx/SolrScheduler
В основном вы просто забрасываете JSON файл в указанную папку, и он будет использовать клиент REST для выдачи команд Solr.