有没有办法强制Solr每X分钟读取一次索引?

时间:2015-01-26 09:18:00

标签: solr

我正在尝试使用Solr来读取和搜索另一个应用程序提供的索引。这些索引每15分钟复制到一个NAS。

有没有办法迫使Solr每15分钟重新阅读一次索引?有没有办法设置搜索器过期或使用CRON表达式重新加载?

我知道我可以重新加载核心......但是我想问是否还有另一种方式...

感谢。

2 个答案:

答案 0 :(得分:2)

如果你能写一些CRON表达式,可以这样做:

Solr有一个重新加载核心的端点,所以你需要的是每隔X分钟点击一次这个URI。

  

从与现有注册的配置相同的配置加载新核心   核心。虽然"新"核心是初始化," old"一个人会继续   接受请求。一旦完成,所有新请求都将转到   "新"核心,以及" old"核心将被卸载。

     

http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0

答案 1 :(得分:2)

是的,您可以使用CRON表达式。

DataImportHandler将允许您根据NAS索引更新Solr索引。 寻找" delta-import"命令"用于增量导入和变更检测":

 http://<host>:<port>/solr/<collection_name>/dataimport?command=delta-import

以编程方式使用SolrJ之类的Client API

CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr/<collection_name>");
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("command", "delta-import");
QueryRequest request = new QueryRequest(params);
request.setPath("/dataimport");
server.request(request);