如何向 Solr 查询集合的详细信息,例如集合的配置名称?

How to query Solr for a Collection's details, such as a Collections' config name?

如何使用 HTTP API 查询 Solr 以获取有关集合的信息?我不是在谈论集合的索引,我可以使用 COLSTATUS 命令查询这些索引。我说的只是一个集合的基本细节,在Solr web管理页面点击一个集合就可以看到,比如配置名称。

请尝试以下代码。

getConfigName(String collectionName){
    
    //provide the list of zookeeper instances   
    List<String> zkHosts = ""
    // get the solr cloud client
    CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder (zkHosts, Optional.empty 
    ()).build ();
    
    // get the config for the collection
    String configName = solrConnectionProvider.getCloudSolrClient().getZkStateReader().readConfigName(collectionName);
   return configName;
}

请自行处理异常情况。

想知道 Web 界面中提供的信息来自何处时,最简单的方法是打开浏览器的开发工具并转到“网络”部分。由于该界面是一个小型 Javascript 应用程序,它在后台使用可用的 REST API - 与您自己查询的方式相同。

广泛的collection信息可以通过查询检索:

/solr/admin/collections?action=CLUSTERSTATUS&wt=json

(任何 _ 参数仅用于缓存清除)。

这将 return 列出所有存在的 collection 及其元数据,例如它们使用的配置集以及 collection 由哪些分片组成。这与 Web 界面使用的 API 端点相同。

collections":{
  "aaaaa":{
    "pullReplicas":"0",
    "replicationFactor":"1",
    "shards":{"shard1":{
        "range":"80000000-7fffffff",
        "state":"active",
        "replicas":{"core_node2":{
            "core":"aaaaa_shard1_replica_n1",
            "base_url":"http://...:8983/solr",
            "node_name":"...:8983_solr",
            "state":"down",
            "type":"NRT",
            "force_set_state":"false",
            "leader":"true"}}}},
    "router":{"name":"compositeId"},
    "maxShardsPerNode":"1",
    "autoAddReplicas":"false",
    "nrtReplicas":"1",
    "tlogReplicas":"0",
    "znodeVersion":7,
    "configName":"_default"},
  ...
}