如何在Solr中安排数据导入

Eld*_*ldo 14 solr

维基页面http://wiki.apache.org/solr/DataImportHandler解释了如何使用DataImportHandler索引数据.但该示例使用命令启动导入操作.如何安排工作定期执行此操作?c

Pas*_*imo 14

在UNIX/Linux上,cron job是你的朋友!在Windows上,有任务计划程序.

更新
要从Java代码执行此操作,因为这是一个简单的GET请求,您可以使用HTTP客户端库.有关使用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);
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果你是从cron那里做的,那么wget http://127.0.0.1:8983/solr/dataimport?command=full-import效果很好! (5认同)

小智 7

我能够按照以下步骤使其工作:

  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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 根据Wiki页面中的说明配置dataimport.properties.


Dan*_*ier 7

使用以下crontab -e命令将此行添加到crontab :

0,30 * * * * /usr/bin/wget http://<solr_host>:8983/solr/<core_name>/dataimport?command=full-import 
Run Code Online (Sandbox Code Playgroud)

这将每30分钟完全导入一次.替换<solr_host><core_name>配置您的配置