Solr: Retrieve field names from a solr index?

前端 未结 3 1528
借酒劲吻你
借酒劲吻你 2020-12-29 22:17

How can I query a Solr instance for all (or prefixed) field names?

I want to use dynamic fields where I do not know how many may exist e.g: category_0_s,

相关标签:
3条回答
  • 2020-12-29 22:35

    If you need to do this from your Java application you can use Solrj and LukeRequestRequestHandler.

    Your code would look like this.

    LukeRequest lukeRequest = new LukeRequest();
    lukeRequest.setNumTerms(0);
    
    LukeResponse lukeResponse = lukeRequest.process(server);
    
    Map<String, FieldInfo> fieldInfoMap = lukeResponse.getFieldInfo();
    
    for (Entry<String, FieldInfo> entry : fieldInfoMap.entrySet()) {
    
        String fieldName = entry.getKey();
        FieldInfo fieldInfo = entry.getValue();
    
        // process fieldInfo    
    }
    
    0 讨论(0)
  • 2020-12-29 22:41

    This query will return a comma-separated list of all the fields that are in use, including dynamic ones.

    select?q=*:*&wt=csv&rows=0&facet
    

    To answer the original question, this is how to get a list of all the fields starting with category_

    select?q=*:*&wt=csv&rows=0&facet&fl=category_*
    

    The presence of the facet parameter is needed to make this query work on newer versions of Solr. On older versions, it will work without it.

    On older versions, a wildcard in the fl parameter won't work.

    0 讨论(0)
  • 2020-12-29 22:58

    Use the luke handler:

    http://solr:8983/solr/admin/luke?numTerms=0
    

    Use a xpath to get all the field which has the tag dynamicBase matching the dynamic fields definition you are looking for.

    0 讨论(0)
提交回复
热议问题