gpt4 book ai didi

elasticsearch - 在Elastic Search中将嵌套的单位数据存储在Kibana中进行分析是否更好?

转载 作者:行者123 更新时间:2023-12-03 01:27:51 24 4
gpt4 key购买 nike

我们决定将一些数据存储在Elastic Search中,以便在Kibana中进行分析。我们暂时依靠Kibana中的动态映射。

以这种嵌套方式存储数据是否更好:

project: {
id: 1,
path: [1],
device: {
id: 2,
path: [1,2],
accessory: {
id: 3,
path: [1,2,3]
}
}
}

或发送更多标准化数据,如下所示:
project: {
id: 1,
path: [1]
}

device: {
id: 2,
path: [1,2]
}

accessory: {
id: 3,
path: [1,2,3]
}

还是有第三种更好的方法来存储上面的数据?

最佳答案

根据示例的结构,嵌套应该会更有用。

假设您的项目有多个设备,每个设备具有一个以上附件。您的结构可能如下所示:

{
id: project1,
...,
devices: [
{
id: dev1,
name: device1,
...,
accessories:[
{
name: accessory1.1,
id: acc1.1,
...
},
{
name: accessory1.2,
id: acc1.2,
...
}
]
},
{
id: dev2,
name: device2,
...,
accessories:[
{
name: accessory2.1
id: acc2.1,
...
}
]
}
]
}

使用这种结构的优点:
  • 您的映射和设置仅专注于项目的结构,而不是为每个项目,设备,配件定义多个设置和映射。
  • 另外,您将避免“标准化”您的文档。规范化意味着项目,设备和附件将具有相同的字段,并且期望使用相同类型的值。
  • 如果需要,您可以在项目中添加或删除设备或附件,而不会影响多个文档。
  • 您可以在Kibana中创建仪表板,以基于某些字段分析数据。仪表板接受聚合,您可以使数据每5秒刷新一次。

  • 我可以发现一些缺点:
  • 如果您不熟悉ES,查询一开始可能会有些混乱。
  • 如果删除项目,则包括设备和附件在内的全部信息也将被删除。小心点。
  • 聚合可能会影响您的性能。但这与基础架构(硬件,集群设计等)更多相关。

  • 最后,如果要单独存储项目,设备和配件的信息,则可以为每个信息使用索引,但是它们之间的关系可能不那么容易维护,查询将变得非常复杂。

    希望这会有所帮助! :D

    关于elasticsearch - 在Elastic Search中将嵌套的单位数据存储在Kibana中进行分析是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525382/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com