如何查询所有(或前缀)字段名称的solr实例?
我想使用像
这样的动态字段category_0_s
category_1_s
...
但我不知道可能存在多少。所以我想检索所有字段(最好使用前缀“category _”)。
任何想法?感谢
答案 0 :(得分:32)
此查询将返回以逗号分隔的列表,其中包含正在使用的所有字段,包括动态字段。
select?q=*:*&wt=csv&rows=0&facet
要回答原始问题,这是如何获取以类别_
开头的所有字段的列表select?q=*:*&wt=csv&rows=0&facet&fl=category_*
需要使用facet
参数才能使此查询在较新版本的Solr上运行。在旧版本中,它可以在没有它的情况下工作。
在旧版本中,fl
参数中的通配符无法正常工作。
答案 1 :(得分:21)
使用luke处理程序:
http://solr:8983/solr/admin/luke?numTerms=0
使用xpath获取标签dynamicBase与您要查找的动态字段定义匹配的所有字段。
答案 2 :(得分:1)
如果您需要从Java应用程序执行此操作,可以使用Solrj和LukeRequestRequestHandler。
您的代码看起来像这样。
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
}