compose / transporter将数据从mongodb迁移到elasticsearch,每个文档都有不同的映射

时间:2014-12-22 13:10:07

标签: mongodb elasticsearch

我在mongodb中有一个集合,其中每个文档都是一个图表。每个文档的文档架构都不同。每个文档都有以下数组作为其键

nodeAttrs:对象数组,每个对象表示节点

的属性的详细信息

nodes:包含nodeAttrs

中定义的属性的节点数组

edgeAttrs:对象数组,每个对象表示边缘

属性的详细信息

edges:包含在edgeAttrs

中定义的属性的边数组

现在的挑战是,对于文档,这4个属性中的任何一个都可以为null,但大多数时候它们都是填充的。但是,这些数组中对象的模式在文档中是不同的。对于某些图形,边缘可能具有与其他图形不同的属性。与节点类似。

我正在使用compose/transport utility将数据从mongoDB迁移到elasticsearch。我想将每个记录转储到目标中的单独类型(具有不同的映射)。有人最近试过了吗?

以下是edgeAttrs元素和edge数组的示例:

这是edgeAttrs:

"edgeAttrs" : [ 
  {
    "id" : "LinkTypeNum",
    "title" : "LinkTypeNum",
    "generatorType" : "file",
    "generatorOptions" : null,
    "_id" : ObjectId("539dd0a62a91d09735264ae7"),
    "visible" : true
  }, 
  {
    "id" : "LinkType",
    "title" : "LinkType",
    "generatorType" : "file",
    "generatorOptions" : null,
    "_id" : ObjectId("539dd0a62a91d09735264ae6"),
    "visible" : true
  }, 
  {
    "id" : "In Minimal Spanning Tree (c)",
    "title" : "In Minimal Spanning Tree (c)",
    "generatorType" : "file",
    "generatorOptions" : null,
    "_id" : ObjectId("539dd0a62a91d09735264ae5"),
    "visible" : true
  }
]

这是一个只包含一条边的边数组。边的attrs数组包含edgeAttrs中定义的属性加上权重属性。类似的结构存在于具有更多属性的nodeAttrs和节点。

"edges" : [ 
  {
    "id" : "0",
    "source" : "76",
    "target" : "1",
    "_id" : ObjectId("539dd0a62a91d09735262f33"),
    "attr" : [ 
      {
        "id" : "weight",
        "val" : "1.0",
        "_id" : ObjectId("539dd0a62a91d09735262f37")
      }, 
      {
        "id" : "LinkTypeNum",
        "val" : "3",
        "_id" : ObjectId("539dd0a62a91d09735262f36")
      }, 
      {
        "id" : "LinkType",
        "val" : "Non-Feeding Positive",
        "_id" : ObjectId("539dd0a62a91d09735262f35")
      }, 
      {
        "id" : "In Minimal Spanning Tree (c)",
        "val" : "false",
        "_id" : ObjectId("539dd0a62a91d09735262f34")
      }
    ],
    "visible" : true,
    "layerId" : 0,
    "label" : "edge"
  }
]

0 个答案:

没有答案