querybuilder 排序_elasticsearch7 嵌套查询,根据嵌套字段排序--备忘

/**

* 加载查询条件

* @param searchVO

* @return*/

public voidinitQuerySubjectbbsListBuilder(NativeSearchQueryBuilder queryBuilder, SubJectVO searchVO) {//复合查询

BoolQueryBuilder boolQueryBuilder =QueryBuilders.boolQuery();

{//数据必须有效

TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("isDisable", ContantsEnums.DISABLE_0.getIndex());

boolQueryBuilder.must(termQueryBuilder);

}//主题相关//String fkIdLocationSt;

TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("bbsSubjectEsVos.subjectId", searchVO.getSubjectId());

NestedQueryBuilder nestedQueryBuilder= QueryBuilders.nestedQuery("bbsSubjectEsVos", termQueryBuilder, ScoreMode.None);

boolQueryBuilder.must(nestedQueryBuilder);//查询条件

queryBuilder.withQuery(boolQueryBuilder); //范围查询

}/**

* @desc 设置分页、排序

* @da

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 中进行嵌套字段排序,可以使用 `nested` 类型,它允许您在嵌套文档中进行排序。在 Java 中,您可以使用 `SortBuilders` 类的 `nestedSort` 方法来创建嵌套排序。以下是一个示例代码: ```java import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; SortBuilder nestedSortBuilder = SortBuilders.nestedSort( "nested_field", SortBuilders.fieldSort("nested_field.field1").order(SortOrder.DESC), SortBuilders.fieldSort("nested_field.field2").order(SortOrder.ASC) ); ``` 在上面的示例中,我们首先使用 `SortBuilders.fieldSort` 方法创建两个字段排序规则,分别针对嵌套字段中的 `field1` 和 `field2`。然后,我们使用 `SortBuilders.nestedSort` 方法创建一个嵌套排序规则,其中第一个参数是嵌套字段的名称,第二个和第三个参数分别是内部字段排序规则。在示例中,我们首先按照 `field1` 降序排序,然后再按照 `field2` 升序排序。 最后,您可以将嵌套排序规则设置到 `SearchSourceBuilder` 中,在 `SearchRequest` 中进行搜索。以下是示例代码: ```java import org.elasticsearch.search.builder.SearchSourceBuilder; SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.sort(nestedSortBuilder); ``` 在上面的示例中,我们将嵌套排序规则设置到 `SearchSourceBuilder` 中,并将其分配给 `searchSourceBuilder` 变量。然后,您可以将 `searchSourceBuilder` 设置到 `SearchRequest` 中进行搜索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值