Solr嵌套文档:查询由父字段筛选的子文档



我有以下父子模型

父级:

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;
}

子级:

public class DataSetColumn {
@Field
private String id;
@Field
private String name;
@Field
private String type="type_column";  
}

我可以查询由属于父级的字段过滤的父级文档,如下所示:

http://solrserver:8886/solr/BeanTest10/select?q=*:*&fq=(type:type_dataset)&fl=*,[child
parentFilter=type:type_dataset]&wt=json&indent=true

现在我想:

  1. 查询按serviceId(父字段(筛选的"DataSetColumes"(子文档(
  2. 还返回"dataSourceId",它是响应(DataSet(中父级中的字段

如何实现这一点?

是的,您可以通过BlockJoinParentQueryParser的强大功能实现这样的功能。

基本语法如下-q={!parent which=<allParents>}<someChildren>

在您的情况下,它可以转换为类似+{!parent which="type:type_dataset"}name:random* +service_id:1的东西

返回子文档的技巧是相同的(子文档转换器(:

fl=data_id,[child parentFilter=type:type_dataset]

如果需要,您也可以通过fl构造来限制子字段。

最新更新