在Elasticsearch中有效存储遥测

时间:2017-04-18 18:08:15

标签: elasticsearch elasticsearch-5

我正在研究一个用例,我认为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英里的纬度/长度?”

如果此处有第三种选择我不知道,请随时提出建议。我的研究表明这些至少有两种选择。

提前感谢您,我很高兴开始使用这个新工具。

约什

0 个答案:

没有答案