簡體   English   中英

在Elastic Search中將嵌套的單位數據存儲在Kibana中進行分析是否更好?

[英]Is it better to store data nested of flat in Elastic Search for analysis in Kibana?

我們已決定在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM