示例:
Parent doc
id: 1
field1: politics
field2: donkeys
Child doc
parent_id: 1
field1: prose
我希望能够搜索“政治驴散文”(作为AND查询,但不关心任何单词匹配哪个字段)并使其与父文档匹配。这可能吗?或者我是否需要开始将孩子们作为父母中的一个大字段卷起来(非常不受欢迎,因为可能有很多孩子)?
我最好在Java中寻找解决方案,但我会采取任何方式来获取它!
答案 0 :(得分:0)
我认为这可能会这样做:
String parent_fields = "f1,f2";
String child_fields = "f3,f4";
BoolQueryBuilder allQueries = QueryBuilders.boolQuery();
for( String term : terms )
{
BoolQueryBuilder booly = QueryBuilders.boolQuery();
for( String field : parent_fields.split( "," ) )
{
booly.should( QueryBuilders.termQuery( field, term ) );
}
for( String field : child_fields.split( "," ) )
{
booly.should( QueryBuilders.topChildrenQuery( child_type, QueryBuilders.termQuery( field, term ) ) );
}
allBoolies.must( booly );
}