Solr: Retrieve field names from a solr index?

隐身守侯 提交于 2019-12-18 14:00:27

问题


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

I want to use dynamic fields like

category_0_s
category_1_s
...

but i do not know how many may exist. So I want to retrieve all fields (preferably with the prefix "category_").

Any Ideas? Thanks


回答1:


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.




回答2:


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.




回答3:


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    
}


来源:https://stackoverflow.com/questions/3211139/solr-retrieve-field-names-from-a-solr-index

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!