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