Java操作ES进行过滤查询,出现查询结果过滤成功,但是分组参数没有过滤!!!!!

你的名字 2024-03-23 15:51 146阅读 0赞

造成这种错误的原因:使用了withFilter

  1. // 构建过滤查询
  2. BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
  3. if (!StringUtils.isEmpty(searchMap.get("keywords"))) {
  4. boolQueryBuilder.filter(QueryBuilders.queryStringQuery(searchMap.get("keywords")).field("name"));
  5. }
  6. if (!StringUtils.isEmpty(searchMap.get("brand"))) {
  7. boolQueryBuilder.filter(QueryBuilders.termQuery("brandName", searchMap.get("brand")));
  8. }
  9. if (!StringUtils.isEmpty(searchMap.get("category"))) {
  10. boolQueryBuilder.filter(QueryBuilders.termQuery("categoryName", searchMap.get("category")));
  11. }
  12. nativeSearchQueryBuilder.withFilter(boolQueryBuilder);

解决办法:使用withQuery

  1. // 构建过滤查询
  2. BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
  3. if (!StringUtils.isEmpty(searchMap.get("keywords"))) {
  4. boolQueryBuilder.filter(QueryBuilders.queryStringQuery(searchMap.get("keywords")).field("name"));
  5. }
  6. if (!StringUtils.isEmpty(searchMap.get("brand"))) {
  7. boolQueryBuilder.filter(QueryBuilders.termQuery("brandName", searchMap.get("brand")));
  8. }
  9. if (!StringUtils.isEmpty(searchMap.get("category"))) {
  10. boolQueryBuilder.filter(QueryBuilders.termQuery("categoryName", searchMap.get("category")));
  11. }
  12. nativeSearchQueryBuilder.withQuery(boolQueryBuilder);

发表评论

表情:
评论列表 (有 0 条评论,146人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DSL查询过滤

    1、 什么是DSL查询    由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。   DSL(Domain Specif