V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sniperking1234
V2EX  ›  程序员

求助: ES 聚合查询,使用了 nested,如何再对某个字段排序?

  •  
  •   sniperking1234 · Nov 27, 2020 · 1889 views
    This topic created in 1977 days ago, the information mentioned may be changed or developed.

    查询语句如下面所示

    {
        "size": 0,
        "aggs": {
            "tags": {
                "nested": {
                    "path": "tags"
                },
                "aggs": {
                    "key": {
                        "filter": {
                            "term": {
                                "tags.key": "http.url"
                            }
                        },
                        "aggs": {
                            "values": {
                                "terms": {
                                    "field": "tags.value",
                                    "size": 100
                                },
                                "aggs": {
                                    "rev": {
                                        "reverse_nested": {},
                                        "aggs": {
                                            "duration": {
                                                "avg": {
                                                    "field": "duration"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    

    我想对 duration 这个字段按照平均值从大到小排序,找出前 100 条数据,那么这么排序要加在什么地方呢?

    3 replies    2020-11-27 15:12:57 +08:00
    sniperking1234
        2
    sniperking1234  
    OP
       Nov 27, 2020
    @zsl199512101234 我试了下,这样写 sort 貌似对有聚合的查询不起作用。
    sniperking1234
        3
    sniperking1234  
    OP
       Nov 27, 2020
    找到方法了,这么写就可以
    {
    "size": 0,
    "aggs": {
    "tags": {
    "nested": {
    "path": "tags"
    },
    "aggs": {
    "key": {
    "filter": {
    "term": {
    "tags.key": "http.url"
    }
    },
    "aggs": {
    "values": {
    "terms": {
    "field": "tags.value",
    "size": 200,
    "order": {"rev>duration": "desc"}
    },
    "aggs": {
    "rev": {
    "reverse_nested": {},
    "aggs": {
    "duration": {
    "avg": {
    "field": "duration"
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1155 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    ♥ Do have faith in what you're doing.