我有用户文档,其中包含各种字段,包括addressId。我想要具有不同addressId的用户列表。如果两个用户具有相同的addressId,则返回任何一个用户并跳过其他用户。
我正在尝试按addressId对用户进行分组,但它无法正常工作。
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).
addAggregation(AggregationBuilders.terms("addressId").field("addressId").size(1)).
withPageable(new PageRequest(page, size)).build();
答案 0 :(得分:0)
您希望添加大小为1的top hits subaggregation
。这将为每个addressId字段返回一个文档(即您的情况下的用户)。
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder)
.addAggregation(AggregationBuilders
.terms("addressId")
.field("addressId")
.size(Integer.MAX_VALUE)
.subaggregation(AggregationBuilders.topHits("justOneUserPerAddressId)
.setSize(1)
)
.withPageable(new PageRequest(page, size)).build();