wiki页面http://wiki.apache.org/solr/DataImportHandler解释了如何使用DataImportHandler索引数据。但该示例使用命令启动导入操作。我如何安排工作定期执行此操作?c
答案 0 :(得分:13)
在UNIX / Linux上,cron jobs是你的朋友!在Windows上,有Task Scheduler。
<强>更新强>
要从Java代码执行此操作,因为这是一个简单的GET请求,您可以使用HTTP Client库。有关使用GetMethod的信息,请参阅this tutorial。
如果您需要以编程方式向Solr发送其他请求,则可能应使用Solrj library。它允许将所有基本命令发送到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);
答案 1 :(得分:7)
我能够按照以下步骤使其工作:
创建类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。
答案 2 :(得分:7)
使用crontab -e
命令将此行简单地添加到您的crontab中:
0,30 * * * * /usr/bin/wget http://<solr_host>:8983/solr/<core_name>/dataimport?command=full-import
这将每30分钟完全导入一次。将<solr_host>
和<core_name>
替换为您的配置
答案 3 :(得分:1)
Esteve Fernandez有一个新的补丁,使整个过程在Unix / Linux上运行:https://issues.apache.org/jira/browse/SOLR-2305
@Eldo如果您在构建自己的JAR时需要更多帮助,请在此处提出问题...
答案 4 :(得分:1)
这有点旧,但我创建了一个Windows WPF应用程序和服务来处理这个问题,因为如果你有很多内核/环境,使用CRON作业和任务调度程序有点难以维护。
https://github.com/systemidx/SolrScheduler
您基本上只是放入指定文件夹中的JSON文件,它将使用REST客户端向Solr发出命令。
答案 5 :(得分:1)
我们可以使用Quartz来做到这一点,就像linux上的crontab一样。但基本上,嵌入在jdk中的TimerTask对你来说已经足够了。