Как я могу запланировать импорт данных в Solr - PullRequest
13 голосов
/ 08 июля 2010

На вики-странице http://wiki.apache.org/solr/DataImportHandler объясняется, как индексировать данные с помощью DataImportHandler. Но в примере используется команда для запуска операции импорта. Как я могу запланировать работу, чтобы сделать это на регулярной основе? C

Ответы [ 6 ]

13 голосов
/ 08 июля 2010

В UNIX / Linux задания cron - ваши друзья! В Windows есть Task Scheduler .

UPDATE
Чтобы сделать это из кода Java, поскольку это простой запрос GET, вы можете использовать библиотеку HTTP Client . См. этот урок по использованию GetMethod.

Если вам нужно программно отправить другие запросы в Solr, вам, вероятно, следует использовать библиотеку Solrj . Он позволяет отправлять все основные команды в Solr и может быть настроен для доступа к любым обработчикам 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);
7 голосов
/ 09 февраля 2014

просто добавьте эту строку в ваш crontab с помощью команды crontab -e:

0,30 * * * * /usr/bin/wget http://<solr_host>:8983/solr/<core_name>/dataimport?command=full-import 

Это будет полный импорт каждые 30 минут.Замените <solr_host> и <core_name> вашей конфигурацией

7 голосов
/ 17 июня 2011

Я смог заставить его работать, выполнив следующие шаги:

  1. Создание классов ApplicationListener, HTTPPostScheduler и SolrDataImportProperties (исходный код указан в http://wiki.apache.org/solr/DataImportHandler#Scheduling). Я считаю, что эти занятия еще не были совершены.

  2. Добавьте следующий слушатель в файл Solr web.xml:

    <listener>
       <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
    </listener>
    
  3. Настройте dataimport.properties согласно инструкциям на вики-странице.

1 голос
/ 05 декабря 2016

Мы можем использовать для этого Quartz, который похож на crontab на linux. Но в принципе вам достаточно TimerTask, встроенного в jdk.

1 голос
/ 09 марта 2016

Это немного устарело, но я создал приложение и службу Windows WPF, чтобы справиться с этим, поскольку использование заданий CRON и планировщика заданий довольно сложно поддерживать, если у вас много ядер / сред.

https://github.com/systemidx/SolrScheduler

Вы просто помещаете файл JSON в указанную папку, и он использует REST-клиент для выдачи команд Solr.

1 голос
/ 16 января 2012

Есть новый патч от Esteve Fernandez, который заставляет все это работать на Unix / Linux: https://issues.apache.org/jira/browse/SOLR-2305

@ Eldo Если вам понадобится дополнительная помощь в создании собственного JAR, просто напишите вопросздесь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...