Elasticsearch group by

时间:2017-03-15 13:31:13

标签: elasticsearch

我有一个包含如下文档的elasticsearch(v.5.2.0)索引:

SELECT ServiceName, MachineName FROM test-index-2017.03.15 GROUP BY MachineName

我希望得到所有' ServiceName'按" MachineName"分组的值如果这是在SQL世界中,我会做类似GET /test-index-2017.03.15/_search { "size": 0, "aggs" : { "by_machinename" : { "terms" : { "field" : "MachineName" } } } }

的事情

我很早就陷入了困境,因为我甚至无法进行简单的聚合工作。目前我得到了这个:

<html>
<head><title>NP Framer v1.0</title></head>
<noframes>
<body>
Your browser doesn't support frames.  Please click <a href="http://www.duckduckgo.com">here</a> to be redirected to the new page.
</body>
</noframes>
<frameset framespacing="0" rows="150,*" frameborder="0" resize>
<frame name="top" src="http://www.npscripts.com/framer/demo-top.html" target="top">
<frame name="main" src="http://www.duckduckgo.com" target="main">
</frameset>
</html>

结果为零。

2 个答案:

答案 0 :(得分:2)

您是否尝试过field: fields.MachineName

答案 1 :(得分:1)

在圆顶挖掘并借助paqash的评论之后,这就成了诀窍:

GET /test-index-2017.03.15/_search
{
"size": 0,    
"aggs" : {
    "by_machinename" : {
        "terms" : {
            "field" : "fields.MachineName.keyword"
        },
        "aggs" : {
            "by_servicename" : {
            "terms" : {
                "field" : "fields.Data.ServiceName.keyword"
            }
        }
        }
    }
}
}