Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 如何在Elasticsearch术语聚合中按多个值排序_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch 如何在Elasticsearch术语聚合中按多个值排序,elasticsearch,elasticsearch" /> elasticsearch 如何在Elasticsearch术语聚合中按多个值排序,elasticsearch,elasticsearch" />

elasticsearch 如何在Elasticsearch术语聚合中按多个值排序

elasticsearch 如何在Elasticsearch术语聚合中按多个值排序,elasticsearch,elasticsearch,如何按多个值排序ES术语聚合 目前我确实: aggs : { aggName : { terms : { field : "foo", order : { "subAgg.avg" : "desc" } } }, aggs : { subAgg : { stats : { field : "bar"

如何按多个值排序ES术语聚合

目前我确实:

aggs : {
    aggName : {
        terms : {
            field : "foo",
            order : { "subAgg.avg" : "desc" }
        }
    },
    aggs : {
        subAgg : {
            stats : {
                field : "bar"
            }
        }
    }
}
API说您可以执行以下操作:

order : [ { "subAgg.avg" : "desc" }, { "subAgg.count" : "desc" } ]
但这不起作用,ES会抛出一个错误:

Unknown key for a START_ARRAY in [aggName]: [order].
我在其他帖子中发现了类似的内容:

order : { "subAgg.avg" : "desc", "subAgg.count" : "desc" }
没有错误,但排序不正确

我的问题是,如何按多个值正确排序? 我已经安装了ES 1.4.4

thx

编辑: 映射

查询:

{
    query : { 
        match_all : {} 
    },
    aggs : {
        aggName : {
            terms : {
                field : "foo",
                order : [ { "subAgg.avg" : "desc" }, { "subAgg.count" : "desc" } ]
            },
            aggs : {
                subAgg : {
                    stats : {
                        field : "foo"
                    }
                }
            }
        }
    }
}    
您可以尝试以下方法:

"order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
发件人:


通过本文档,您的语法似乎是正确的。为我们提供文档化映射和完整查询的映射,在没有order子句的情况下,查询运行时不会出错,但一旦order是array类型,它就会给出:SearchParseException[[mymapping][1]:query[ConstantCore:],from[-1],size[-1]:使用ES 1.5.0解析失败[aggName]:[order].]中的START_数组的未知键,我做的正是你上面展示的,除了我是通过两个不同的子聚合进行排序。除此之外,基本上是一样的,对我来说很好。
"order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
{
"aggs" : {
    "countries" : {
        "terms" : {
            "field" : "artist.country",
            "order" : [ { "rock>playback_stats.avg" : "desc" }, { "_count" : "desc" } ]
        },
        "aggs" : {
            "rock" : {
                "filter" : { "term" : { "genre" : "rock" }},
                "aggs" : {
                    "playback_stats" : { "stats" : { "field" : "play_count" }}
                }
            }
        }
    }
}