我正在尝试在Kibana中创建一个与我网站上最受欢迎页面相关的小型仪表板。文档以以下格式存储:
{
"ev": "pageview",
"meta": {
"visitor": "blah",
"pages": {
"/my-route": {
"title": "My route",
"desc": "foo bar"
},
"/my-route#2": {
"title": "My route 2"
"desc": "foo bar"
},
}
}
}
因此,我正在尝试创建一个显示以下内容的表:
Page Views
/foo 10
/foo#2 10
/bar 5
但是,我似乎无法基于对象的键进行聚合。那可能吗?
最佳答案
我认为您的数据结构会给您带来困难的时间。
我建议您将其更改为:
{
"ev": "pageview",
"visitor" :"blah",
"route": "/my-route",
"title":"My route",
"desc" foo bar"
}
除了需要的任何其他映射外,还具有用于ev,访客和路线的“关键字”映射类型。
然后,您可以像这样聚合:
GET /{YOUR_INDEX}/_search
{
"query": {"match_all": {}},
"aggs": {
"page_views": {
"terms": {
"field": "route",
"size": 100
}
}
}
}
上述汇总将根据每个基本“路线”值的计数返回前100个计数页面。
如果可能的话,使用您当前的结构进行操作将需要一些非常有趣的脚本。
编辑*我想指出的是,我假设您想按照结构来汇总所有文档。如果您仅基于单个文档的嵌套对象来查找计数,则可能有一种方法。
关于elasticsearch - ElasticSearch:字段键上的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46779273/