这是我的数据的快速摘要。
name: Parent1
children:
name:Child1
gender:M
favToy:Hammer
name: Parent2
children:
name:Child2
gender:M
favToy:Bottle
name:Child1
gender:M
favToy:Cloth
这是我的查询即时消息,用于建立以下内容的列表 favToy,其中child.name = Child1。
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(
QueryBuilders.nestedQuery(
"customData",
new BoolQueryBuilder()
.must(QueryBuilders.termQuery("child.name", "Child1"))
.must(QueryBuilders.termQuery("child.gender", "M"))
, ScoreMode.None)
)
.withIndices(EVENT_INDEX_NAME).withTypes("parent")
.addAggregation(AggregationBuilders.terms("values").field("child.favToy"))
.build();
我得到的列表是
Hammer,
Bottle
我应该得到的清单是
Hammer,
Cloth
我认为这是由于Parent2具有多个子对象,并且favToy的值错误而已在聚合存储桶中收集的。有没有一种方法可以对aggregationBuilder进行过滤或使用查询?或者我可以在这里使用其他聚合方法。