【问题标题】:Order elasticsearch aggregation订购 elasticsearch 聚合
【发布时间】:2018-07-07 09:41:19
【问题描述】:

我的“查询”中有多个聚合,请参见示例。我有时会使用更多的聚合。我喜欢对聚合本身进行排序,所以“品牌”总是在聚合列表的顶部(在结果中),然后是“能量”?

如果我自己想弄清楚但找不到任何可行的方法。

{
    "size": 1000,
    "_source": ["id"],
    "query": { 
        "bool": { 
            "must": [
                { "match": { "category_default": "2" }}
            ],
            "must_not": [
                { "match": { "category_default": "2196" }},
                { "match": { "leverbaarheid_id": "3" }}
            ]
        }
    },  
    "aggs": {
        "brand": {
            "terms": {
                "field": "brand.keyword",
                "order": { "_term": "asc" }
            }
        },
        "min_price": { "min": { "field" : "selling_price" } },
        "max_price": { "max": { "field" : "selling_price" } },
        "energy": {
            "terms": {
                "field": "energy.keyword",
                "order": { "_term": "asc" }
            }
        }
    }
}

【问题讨论】:

  • 您要订购聚合结果还是聚合桶?
  • 因此,我将“聚合”数组作为 [min_price, max_price, brand, energy] 返回。但我喜欢像 [brand, energy, min_price, max_price] 一样找回它希望这是有道理的

标签: elasticsearch elasticsearch-5


【解决方案1】:

我不认为这是直接可能的。

我喜欢对聚合本身进行排序,这样“品牌”总是位于聚合列表的顶部(在结果中),然后是“能量”?

这里你把它命名为“聚合列表”虽然它实际上是一个JSON对象,它是Elasticsearch aggregations的输出格式:

每个聚合都与用户指定的逻辑名称相关联 定义...这些逻辑名称也将用于唯一 识别响应中的聚合。

此外,在 JSON 对象中,键可以按任何顺序排列,例如参见 this question

您必须从聚合中创建一个列表,并在客户端进行正确排序。

【讨论】:

  • 谢谢!我只是暂时这样做了。但认为这将是最终的解决方案
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 2017-09-24
  • 2015-07-13
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多