You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch 8.12:如何用Lambda将嵌套排序JSON转为Java DSL的withSort?

Elasticsearch嵌套排序的Java Query DSL实现(ES 8.12 + Spring 3.1.3)

需求对应的JSON排序配置

{
  "sort": [
    {
      "estoques.preco": {
        "order": "asc",
        "nested": {
          "path": "estoques",
          "filter": {
            "term": {
              "estoques.filial": 21
            }
          }
        }
      }
    }
  ]
}

对应的Java Query DSL实现(Lambda表达式风格)

NativeQuery query = NativeQuery.builder()
    .withSort(sort -> sort
        .field(f -> f
            .name("estoques.preco")
            .order(SortOrder.ASC)
            .nested(nested -> nested
                .path("estoques")
                .filter(filter -> filter
                    .term(term -> term
                        .field("estoques.filial")
                        .value(21)
                    )
                )
            )
        )
    )
    // 可按需追加其他查询配置(如withQuery添加主查询条件)
    .build();

代码说明

  • 通过NativeQuery.builder()构建查询,利用withSort结合Lambda表达式配置排序规则
  • 用field()指定排序字段estoques.preco,并设置升序排序SortOrder.ASC
  • 借助nested()配置嵌套排序的路径estoques,同时在filter中添加term条件,过滤出嵌套文档中estoques.filial等于21的数据
  • 可根据业务需求继续添加其他查询逻辑(比如主查询条件、分页等)

内容的提问来源于stack exchange,提问作者fabio petry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:08:13