es 嵌套排序

POST /_search
{
   "query" : {
      "term" : { "product" : "chocolate" }
   },
   "sort" : [
       {
          "offer.price" : {
             "mode" :  "avg",
             "order" : "asc",
             "nested": {
                "path": "offer",
                "filter": {
                   "term" : { "offer.color" : "blue" }
                }
             }
          }
       }
    ]
}

es 在进行嵌套排序时 必须在sort里加"nested": 这个参数配置。因为是嵌套吗,所以一条数据可能会有多个符合条件的嵌套,

所以 filter 就是再次对数据进行过滤,仅对过滤后的数据进行排序。这个根据实际情况来确定。上面的查询语句是 先查询商品是chocolate的,然后可能chocolate 有多个颜色,这里仅按照所有蓝色的chocolate 的 平均 价格进行  排序了。

innert_hits里面的sort 是指对当前数据的排序,比如一个chocolate 有很多个颜色,然后根据颜色排序,就会只对当前的chocolate  进行排序。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 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` 中进行搜索。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值