我想存储和查询每个文档的不同属性。像这样:
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"
},
}
}
}