Solr 嵌套文档:查询由 parent 字段过滤的 child 文档
Solr nested documents : Query for child documents filtered by a parent field
我有以下 parent-child 个模型
parent:
public class DataSet {
@Field
private String id;
@Field
private String type="type_dataset";
@Field
private String name;
@Field
private String dataSourceId;
@Field
private String serviceId;
@Field(child=true)
private List<DataSetColumn> columns;
}
child:
public class DataSetColumn {
@Field
private String id;
@Field
private String name;
@Field
private String type="type_column";
}
我可以查询按属于 parent 的字段过滤的 parent 文档:
http://solrserver:8886/solr/BeanTest10/select?q=*:*&fq=(type:type_dataset)&fl=*,[child
parentFilter=type:type_dataset]&wt=json&indent=true
现在我想:
- 查询 "DataSetColumns"(child 文档)按 serviceId(parent 字段)过滤
- 还有 return "dataSourceId" 是响应 (DataSet)
中 parent 中的一个字段
我怎样才能做到这一点?
是的,你可以通过 BlockJoinParentQueryParser 的力量实现这样的目标。
基本语法如下 - q={!parent which=<allParents>}<someChildren>
在您的情况下,它可以转换为类似 - +{!parent which="type:type_dataset"}name:random* +service_id:1
return 子文档的技巧相同 (child doc transformer):
fl=data_id,[child parentFilter=type:type_dataset]
如果需要,您也可以通过 fl
构造来限制子字段。
我有以下 parent-child 个模型
parent:
public class DataSet {
@Field
private String id;
@Field
private String type="type_dataset";
@Field
private String name;
@Field
private String dataSourceId;
@Field
private String serviceId;
@Field(child=true)
private List<DataSetColumn> columns;
}
child:
public class DataSetColumn {
@Field
private String id;
@Field
private String name;
@Field
private String type="type_column";
}
我可以查询按属于 parent 的字段过滤的 parent 文档:
http://solrserver:8886/solr/BeanTest10/select?q=*:*&fq=(type:type_dataset)&fl=*,[child
parentFilter=type:type_dataset]&wt=json&indent=true
现在我想:
- 查询 "DataSetColumns"(child 文档)按 serviceId(parent 字段)过滤
- 还有 return "dataSourceId" 是响应 (DataSet) 中 parent 中的一个字段
我怎样才能做到这一点?
是的,你可以通过 BlockJoinParentQueryParser 的力量实现这样的目标。
基本语法如下 - q={!parent which=<allParents>}<someChildren>
在您的情况下,它可以转换为类似 - +{!parent which="type:type_dataset"}name:random* +service_id:1
return 子文档的技巧相同 (child doc transformer):
fl=data_id,[child parentFilter=type:type_dataset]
如果需要,您也可以通过 fl
构造来限制子字段。