Solr以编程方式获取最后索引时间

时间:2017-03-24 08:39:04

标签: java solr solrj

我正在使用apache solr-6.0.0

我有一个集合:my-search

每当我运行delta-import时,dataimport.properties文件中的last_index_time都会更新。

有没有办法使用api调用获取此值?如果是,如何使用solrj库读取该值?

使用以下api我能够读取文件的内容:

  

http://localhost:8983/solr/my-search/admin/file?wt=json&file=dataimport.properties

回复如下:

#Thu Mar 23 10:00:01 UTC 2017
name.last_index_time=2017-03-23 10\:00\:01
last_index_time=2017-03-23 10\:00\:01

使用solrj java库,我正在做以下事情:

ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/admin/file");
params.set("file", "dataimport.properties");
params.set("contentType", "text/plain;charset=utf-8");

try
{
    return this.solr.query(collectionName, params);
}
catch (Exception e)
{
    logger.info("Exception msg: "  + e.getMessage());
}

但我收到错误说:

org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://localhost:8983/solr/cdi-search: Expected mime type application/octet-stream but got text/plain. #Thu Mar 23 10:00:01 UTC 2017
name.last_index_time=2017-03-23 10\:00\:01
last_index_time=2017-03-23 10\:00\:01

我将contentType更改为application / octet-stream。但现在错误是:

org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://localhost:8983/solr/cdi-search: Invalid version (expected 2, but 35) or the data in not in 'javabin' format

1 个答案:

答案 0 :(得分:0)

SolrJ is an API可以轻松添加,更新和查询Solr集合。换句话说索引文档并搜索它们。

不包括您正在谈论的功能。

您只需提交HTTP请求,下载资源,阅读并解析即可。我建议阅读这篇Java教程" Reading directly from a URL"。

URL oracle = new URL("http://localhost:8983/solr/admin/zookeeper?detail=true&path=%2Fconfigs%2Fmy-search%2Fdataimport.properties");
BufferedReader in = new BufferedReader(
new InputStreamReader(oracle.openStream()));

String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);
in.close();