elasticsearch 用spring data聚合查询,过滤条件不生效

/**
 * 聚合查询
 * @return list
 */
public List<UserResponseVO> listConditionsAggregations() {
    TermsAggregationBuilder builder = AggregationBuilders.terms("interests").field("interests");
    SearchQuery query = new NativeSearchQueryBuilder()
            .withQuery(QueryBuilders.matchQuery("lastName","smith"))  // 此处条件不生效
            .addAggregation(builder)
            .build();
     
    Aggregations aggregations = elasticsearchTemplate.query(query, new ResultsExtractor<Aggregations>() {
        @Override
        public Aggregations extract(SearchResponse response) {
            return response.getAggregations();
        }
    });

    List<UserResponseVO> list = new ArrayList<>();
    Terms terms = aggregations.get("interests");
    Iterator<Terms.Bucket> iterator = (Iterator<Terms.Bucket>) terms
            .getBuckets().iterator();
    while (iterator.hasNext()) {
        MultiBucketsAggregation.Bucket bucket = iterator.next();
        UserResponseVO user = new UserResponseVO((String) bucket.getKey(), (int) bucket.getDocCount());
        list.add(user);
    }
    return list;
}
阅读 3.9k
1 个回答

clipboard.png

是数据的问题,属性设置 fielddata = true,即生效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题