【问题标题】:Elasticsearch sort not working on nested fieldElasticsearch排序不适用于嵌套字段
【发布时间】:2016-07-13 19:27:44
【问题描述】:

Elasticsearch 排序不适用于嵌套字段。它显示混合的升序和降序值。像 40, 30, 50 。它没有像这样按升序显示:30、40、50

查询:

"sort": [
    {
      "sellerInfoES.offerPrice": {
        "order": "asc",
        "ignore_unmapped": true,
        "missing": "_last"
      }
    }
  ]

【问题讨论】:

  • 请在您的帖子中同时显示导致意外结果的数据。

标签: elasticsearch spring-data-elasticsearch


【解决方案1】:

对嵌套字段进行排序很难,问题是您可以拥有多个嵌套文档,因此您必须决定选择哪个文档。一种方法是在嵌套文档中获取某个字段的最小值并按该值排序。您可以使用 mode 属性来执行此操作。您还需要 nested_pa​​th 属性。

应该是这样的:

   "sort" : [
       {
          "sellerInfoES.offerPrice" : {
             "mode" :  "avg",
             "order" : "asc",
             "nested_path" : "sellerInfoES"
          }
       }
    ]

更多信息可以在 elasticsearch 参考中找到: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_nested_sorting_example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2021-08-07
    • 2018-01-16
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多