通过Web API获取Solr版本和JVM属性

时间:2016-12-21 03:28:28

标签: api solr

有没有办法获取Solr的版本和JVM属性,例如Solr主目录,而不必解析HTML?

点击此网址,http://localhost:8983/solr/#/会显示所需的值: Solr Display 并且可以从返回的HTML中解析所需的值: xml <li class="solr solr_spec_version odd" style="display: list-item;"> <dl class="clearfix"> <dt><span>solr-spec</span></dt> <dd>5.0.0</dd> </dl></li>

是否有更直接的方法来获取这些值而无需解析HTML?

1 个答案:

答案 0 :(得分:1)

此信息是通过http://localhost:8983/solr/admin/info/system的ajax加载的,它以XML或JSON格式返回此信息,例如:

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">1</int>
    </lst>
    <str name="mode">std</str>
    <str name="solr_home">D:\solr\solr-5.0.0\solr-5.0.0\server\solr\</str>
    <lst name="lucene">
        <str name="solr-spec-version">5.0.0</str>
        <str name="solr-impl-version">5.0.0 1659987 - anshumgupta - 2015-02-15 12:26:10</str>
        <str name="lucene-spec-version">5.0.0</str>
        <str name="lucene-impl-version">5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03</str>
    </lst>
    ...

这些值由JavaScript文件app.js加载(server \ solr-webapp \ webapp \ _js \ scripts \ app.js)

var system_url = config.solr_path + '/admin/info/system?wt=json';

它通过index.js(server \ solr-webapp \ webapp \ _js \ scripts \ index.js)在输出中呈现:

      var data = {
        'start_time' : app.dashboard_values['jvm']['jmx']['startTime'],
        'jvm_version' : app.dashboard_values['jvm']['name'] + ' (' + app.dashboard_values['jvm']['version'] + ')',
        'processors' : app.dashboard_values['jvm']['processors'],
        'solr_spec_version' : app.dashboard_values['lucene']['solr-spec-version'] || '-',
        'solr_impl_version' : app.dashboard_values['lucene']['solr-impl-version'] || '-',
        'lucene_spec_version' : app.dashboard_values['lucene']['lucene-spec-version'] || '-',
        'lucene_impl_version' : app.dashboard_values['lucene']['lucene-impl-version'] || '-'
      };

      for( var key in data )
      {                                                        
        var value_element = $( '.' + key + ' dd', this );

        value_element
          .text( data[key].esc() );

        value_element.closest( 'li' )
          .show();
      }