首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:在映射中可以引用属性吗?

Elasticsearch:在映射中可以引用属性吗?
EN

Stack Overflow用户
提问于 2019-11-09 15:40:13
回答 1查看 43关注 0票数 0

我在elasticsearch-6中有一个简单的映射,如下所示。

代码语言:javascript
复制
{
  "mappings": {
    "_doc": {
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "fields": {
          "properties": {
            "meta": {
              "properties": {
                "task": {
                  "properties": {
                    "field1": {
                      "type": "keyword"
                    },
                    "field2": {
                      "type": "keyword"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

现在,我必须向它添加另一个属性- tasks,它只是已经定义的task属性的数组。

是否有一种方法可以引用task的属性,使我不必复制所有属性?类似于:

代码语言:javascript
复制
{
  "fields": {
    "properties": {
      "meta": {
        "properties": {
          "tasks": {
            "type": "nested",
            "properties": "fields.properties.meta.properties.task"
          },
          "task": {
            ...
          }
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 10:45:41

您已经可以将task字段用作task对象的数组,但不能独立查询它们。如果您的目标是实现这一点(正如我从第二个示例中假设的那样),我将直接将“嵌套”数据类型设置为task字段的映射--然后,您将需要重新索引。

我无法想象有一个用例,您需要在两个字段中复制相同的对象数组,其中一个是嵌套的,另一个则不是。

编辑

以下是根据评论中的讨论提出的一些考虑因素/建议:

  • 一个字段可以有一个值,也可以有一个值数组。在这种情况下,任务字段可以有一个任务对象或一个任务对象数组。如果您计划独立地查询它的对象(当然,如果它们不止一个),您应该只关心为任务设置“嵌套”数据类型。
  • 我建议以这样的方式来设计你的文件,以避免重复的信息。重复的信息将使您的文档更大更复杂的处理,从而导致更大的存储需求和更慢的查询。
  • 如果无法重新设计文档映射,可以检查别名数据类型是否可以帮助您避免重复。
  • 如果无法重新设计文档映射,可以检查动态模板是否可以帮助您避免重复
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58780797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档