我正在尝试在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
但是,我似乎无法根据对象的密钥进行聚合。那可能吗?
答案 0 :(得分:1)
我认为您的数据结构会给您带来困难时间。
我建议你改成它:
get
使用ev,visitor和route的“关键字”映射类型,以及您需要的其他映射。
然后你可以这样聚合:
Add-Type -Path ".\Other\VLC\Vlc.DotNet.Core.dll"
Add-Type -Path ".\Other\VLC\Vlc.DotNet.Core.Interops.dll"
$Cameras = New-Object System.Collections.ArrayList
$Test = New-Object System.Uri("rtsp://192.168.0.50/axis-media/media.amp?camera=1")
$Cameras.Add($Test)
$VlcLibDirPath = (Get-Location).Path + ".\Other\VLC\libvlc_x64"
$VlcLibDir = New-Object System.IO.DirectoryInfo($VlcLibDirPath)
$VlcOpt = "--rtsp-user=admin", "--rtsp-pwd=12345"
$Plyr = New-Object Vlc.DotNet.Core.VlcMediaPlayer($VlcLibDir, $VlcOpt)
for ($i=0; $i -lt $Cameras.Count; $i++)
{
$Plyr.SetMedia($Cameras[$i]) #Fails here with System.AccessViolationException
$Plyr.Play
$Plyr.Stop
}
上述聚合将根据每个基本“路线”值的计数返回前100个计数页面。
使用当前结构进行操作需要一些非常有趣的脚本,如果它甚至可能的话。
编辑*我想要注意,我假设您希望在您的结构之后聚合所有文档。如果您只是根据其嵌套对象查找该单个文档中的计数,则可能有一种方法。