我正在尝试使用Solr来读取和搜索另一个应用程序提供的索引。这些索引每15分钟复制到一个NAS。
有没有办法迫使Solr每15分钟重新阅读一次索引?有没有办法设置搜索器过期或使用CRON表达式重新加载?
我知道我可以重新加载核心......但是我想问是否还有另一种方式...
感谢。
答案 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);