我在Elasticsearch-6中有一个简单的映射,就像这样。
{
"mappings": {
"_doc": {
"properties": {
"@timestamp": {
"type": "date"
},
"fields": {
"properties": {
"meta": {
"properties": {
"task": {
"properties": {
"field1": {
"type": "keyword"
},
"field2": {
"type": "keyword"
}
}
}
}
}
}
}
}
}
}
}
现在我必须向其添加另一个属性-tasks
,它只是已经定义的task
属性的数组。
有没有办法引用task
的属性,这样我就不必重复所有属性了?像这样:
{
"fields": {
"properties": {
"meta": {
"properties": {
"tasks": {
"type": "nested",
"properties": "fields.properties.meta.properties.task"
},
"task": {
...
}
}
}
}
}
}
答案 0 :(得分:1)
您只能将task
字段用作task
对象的数组,不能单独查询它们。如果您的目标是实现这一目标(如第二个示例所示),则将“嵌套”数据类型直接设置到task
字段的映射中-那么,是的,您需要重新索引。
我无法想象一个用例,在这种情况下,您需要在两个字段中重复相同的对象数组,一个嵌套,另一个不嵌套。
编辑
以下,基于评论中的讨论,一些注意事项/建议: