如何在elasticsearch中存储动态属性?

时间:2013-08-31 11:06:37

标签: elasticsearch

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

JSON:

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

许多文档的键和值都不同,因为只要需要新属性,用户就会定义它们。

以下结构(仅限第二个对象的示例)最好将其存储在elasticsearch中吗? (而不是我想使用mongodb id的属性名称,可能会引用更多细节,例如添加属性的用户)

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

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

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

0 个答案:

没有答案