【问题标题】:ElasticSearch Facets / Aggregations sorting / orderingElasticSearch Facets / 聚合排序 / 排序
【发布时间】:2015-01-23 05:01:41
【问题描述】:

有谁知道如何将聚合/构面桶从一个范围排序为可预测的顺序,即它们被添加到构面的顺序?

目前 1.4 分支(可能还有较旧的分支)按“doc_count”对存储桶进行排序,这是不可预测的。我希望能够以预定义的顺序输出存储桶。

【问题讨论】:

  • 预定义订单是什么意思?请说明您的要求。
  • 我可以设置的顺序,例如按我请求的顺序返回存储桶,而不是按“doc_count”排序
  • 否则允许我向桶中添加任意字段,该字段将在桶中返回,例如标签或某些标识符,以便我自己解决问题...
  • 您有什么具体要求吗?
  • 是的,能够定义它们返回的顺序。例如,我想列出这样的东西.... 今天 (1) 昨天 (5) 3 天前 (3 ) 5 天前 (1) 等等,但目前 ES 按顺序返回它们或“昨天,3 天前,5 天前,今天”....这是非常不可预测的,根本不是如何推广一个好的用户体验列表应该是某种有序的形式。这就是 SOLR 当前的工作方式,所以我知道它在 Lucene 本身中是可能的

标签: sorting elasticsearch elasticsearch-aggregation


【解决方案1】:

一种简单的方法是在您最后根据 Elasticsearch 的响应对它们进行排序。另一种方式可能是按术语(聚合的键)排序。

更新:

如果您将日期范围聚合与如下查询一起使用,则结果将自动按“3 天前”、“昨天”、“今天”的时间顺序排列,而与 doc_count 无关。

 {
   "aggs" : {
       "timerange" : {
           "date_range" : {
               "field" : "day",
               "keyed" : true,
               "ranges" : [
                {
                    "key": "today",
                    "from": "now/d"
                }
                ,
                {
                    "key": "yesterday",
                    "from": "now-1d/d",
                    "to": "now/d"
                },
                {
                    "key": "3 days ago",
                    "from": "now-3d/d",
                    "to": "now-2d/d"
                }
              ]
          }
      }
  }
}

如果您对每日数据感兴趣,那么Date histogram 会更方便。

【讨论】:

  • 再一次,这些是 RANGE 查询。
  • 我对原始答案进行了一些编辑。如果我正确理解您的问题,请告诉我
  • 这是一个非常老套的答案,因为它们的标签方式总是期望存储桶键是可排序的,但无论如何谢谢。我选择在客户端进行排序
猜你喜欢
  • 2016-04-12
  • 2022-01-26
  • 1970-01-01
  • 2021-02-11
  • 2016-04-13
  • 2015-11-06
  • 2015-08-25
  • 2021-01-30
  • 2018-09-14
相关资源
最近更新 更多