0

我想存储和查询每个文档的不同属性。像这样的东西:

JSON:

{
    name: "doc1",
    metadata: [
        { color: "red" },
        { data: [ "value1", "value2", "value3" ] },
        { size: 500 },
        { avail: true },
    ]
},
...
{
    name: "doc4980",
    metadata: [
        { otherValues: [ 55, 33 ] },
        { important: true },
    ]
}

许多文档的键和值将不同,因为它们将由用户在需要新属性时定义。

以下结构(仅适用于第二个对象的示例)是否最好将其存储在 elasticsearch 中?(而不是属性名称,我想使用 mongodb ids,它可以引用更多详细信息,例如添加属性的用户)

"_source" : {
    "name": "doc4980",
    "metadata":[
        {
            k: "51d69d8f0c62690000000011", 
            v: [ 55, 33 ]
        },
        {
            k: "51d69d8f0c62690000000016", 
            v: true
        }
    ]
}

为避免跨对象匹配,我将使用以下映射:

{
    "my_type" : {
        "properties" : {
            "metadata" : {             
                "type" : "nested"            
            }, 
        }
    } 
}
4

0 回答 0