我正在研究一个用例,我认为Elasticsearch 5会很棒,但我仍然有点不确定。
我想使用Elasticsearch为搜索和聚合操作启动遥测记录。
假设: 1)没有任何记录变得“低于另一个”。我们不会退休任何这些数据,只是添加它。
2)数据是时间序列数据。我一直在想它像数据帧。因此,它是与时间相关的值集合。这是一帧的样本。这些平均值很容易达到50,000。在我的用例中,一次需要所有50,000帧,或者至少需要几个值,这并不罕见。 (例如,如果我想要车辆的路径,我想要所有50,000个坐标)
问题:
我是否希望将每个“框架”存储为自己的文档?例如:
"body" : [
telemetry_set_id: 200,
frame: {
datetime: 2017-04-13 00:26:35,
lat: "-37.0000",
long: "127.000000",
speed: "29.3",
battery: "97%"
}
]
所以这意味着要获取整个数据集,我可能需要对所有具有telemetry_set_id的文档执行滚动操作:200。
对我来说,能够进行诸如“向我显示telemetry_set 200的最高速度”或“向我显示包含此X,Y坐标5英里内的坐标的所有遥测数据集”的查询是一个重要的用例。 。“
另一种选择是制作这样的包含框架对象数组的怪异文档:
`
"id" : "telemetry_set_200",
"body" : [
frames:[
{
datetime: 2017-04-13 00:26:35,
lat: "-37.0000",
long: "127.000000",
speed: "29.3",
battery: "97%"
},
{
datetime: 2017-04-13 00:26:36,
lat: "-37.0030",
long: "127.000010",
speed: "30.1",
battery: "96.5%"
},
{
datetime: 2017-04-13 00:26:37,
lat: "-37.0040",
long: "127.000020",
speed: "30.3",
battery: "96%"
}
]
]
`
这里的优点是我可以同时获得整套遥测,我认为这是有帮助的。这仍然允许我说,“向我展示一组遥测数据,包括距离这个特定纬度和长度不到5英里的纬度/长度?”
如果此处有第三种选择我不知道,请随时提出建议。我的研究表明这些至少有两种选择。
提前感谢您,我很高兴开始使用这个新工具。
约什