当前位置: 首页 > 知识库问答 >
问题:

elasticsearch聚合桶排序顺序

狄河
2023-03-14

elasticsearch中,是否有方法使用自定义分数对聚合桶进行排序/排序?

我正在按客户姓名进行扣球。每个客户都有多个订单,其中有一个交货日期字段(DeliveDate)。我想根据与当前日期的距离(接近程度)对桶进行排序。

例如,对交货日期更接近今天日期的客户名进行排序。

       "aggs": {
          "mygroup": {
             "terms": {
                "field": "customername",
                "order" : { "_term" : "asc" }
             }
           }
       }

非常感谢。

共有2个答案

鲁品
2023-03-14

如果您使用的是ElasticSearch v1.4. X,您可以尝试嵌套脚本度量聚合并使用它来排序您的术语存储桶。

"aggs": {
    "mygroup": {
      "terms": {
        "field": "customername",
        "order": {
          "custom_script": "asc"
        }
      },
      "aggs": {
        "custom_script": {
          "scripted_metric": {
            ...
          }
        }
      }
    }
  }

没有经过测试,但从理论上讲,它应该能完成这项工作。

伍成仁
2023-03-14

遗憾的是,目前不允许使用脚本化的\u度量对聚合进行排序。正在跟踪的问题:https://github.com/elastic/elasticsearch/issues/8486

 类似资料:
  • 问题内容: ES版本:1.5(Amazon Elasticsearch) 我的目标:在某个字段上具有重复数据删除功能的搜索结果。我目前正在对聚合进行一些研究,以解决重复数据删除问题。因此,我的结果是一个带有1个大小的存储桶的列表存储桶。但是,我找不到订购存储桶列表的方法。 当前查询: 结果: 我想看到第二个存储桶,其中max_score = 68.78424为第一个。这可能吗? 如果不建议使用聚合

  • 我有一个描述容器的文档结构,它的一些字段是: 我想运行一个搜索聚合,该聚合在两个权重字段上有两个级别的术语聚合,但按权重字段的降序排列,如下所示: 样本文件: 预期输出(未完成): 但是,我不能按嵌套聚合排序。(错误:术语桶只能在子聚合器路径上排序,该子聚合器路径由路径中的零个或多个单桶聚合和最终的单桶或指标聚合构建...) 例如,对于上述示例输出,如果我在术语聚合上引入大小(如果我的数据很大,我

  • 是否可以在elasticsearch中更改范围聚合结果的排序?我在elasticsearch中有一个键控范围查询,并希望根据键而不是doc_count进行排序。 我的文件是: 和聚合查询: 此查询的结果是: 我想根据关键字对结果进行排序,而不是根据范围值。根据elasticsearch文档,无法指定排序顺序,当指定排序顺序时,我得到以下异常: 你有什么办法吗?谢谢!

  • 我们目前正在开发一个多语言文档CMS。因此,我们有翻译成不同语言的文件。 对于使用Elasticsearch进行搜索,我们目前使用每种语言(德语、英语、法语……)一个索引,其中同一文档的所有翻译共享相同的ID。 当用户搜索特定术语时,我们希望在所有语言中搜索,但只返回不同ID的列表。据我所知,只有使用以下术语聚合才能做到这一点: 这很好,但是作为弹性搜索文档https://www.elastic.

  • 数据 我在ES索引中保留了对象。其中每个字段都有一个myKey和myName字符串字段(持久化为关键字字段)。不能保证同一个myKey的myName总是相同的。E、 g.以下两个条目共享相同的myKey,但具有不同的myName值: 挑战 我需要选择并返回所有不同的myKey值,查找并显示最可能的myName(myKey上下文中出现的最多),并按myName对生成的Bucket进行排序。 到目前为

  • 我想根据top hits聚合中第一个元素所拥有的属性,从terms聚合中订购Bucket。 我的尽力而为查询如下(有语法错误): 有人知道如何做到这一点吗? 例子: 按“a”分组,按“id”(desc)排序存储桶,并按“b”(desc)排序最热门的内容,将给出: