2

我正在创建这样的映射

"institution" : {
  "properties" : {        
    "InstitutionCode" : {
      "type" : "string",
      "store" : "yes"
    },
    "InstitutionID" : {
      "type" : "integer",
      "store" : "yes"
    },
    "Name" : {
      "type" : "string",
      "store" : "yes"
    }
  }
}

但是,当我为机构执行实际索引操作时,我添加了一个别名属性(每个机构 0 个或多个别名)

"institution" : {
  "properties" : {   
    "Aliases" : {
      "dynamic" : "true",
      "properties" : {
        "InstitutionAlias" : {
          "type" : "string"
        },
        "InstitutionAliasTypeID" : {
          "type" : "long"
        }
      }
    },     
    "InstitutionCode" : {
      "type" : "string",
      "store" : "yes"
    },
    "InstitutionID" : {
      "type" : "integer",
      "store" : "yes"
    },
    "Name" : {
      "type" : "string",
      "store" : "yes"
    }
  }
}

这实际上是一个简化的示例,因为在记录的实际索引过程中,我实际上添加的字段不仅仅是别名。

在映射创建期间完全定义映射有多重要?

由于索引具有附加属性的机构记录,在索引操作期间自动调整映射是否会受到任何惩罚?我希望机构随着时间的推移获得额外的属性,我想知道除了机构索引代码之外,我是否需要维护映射创建代码。

4

1 回答 1

3

我相信动态映射的开销可以忽略不计……使用它们不会损害索引速度。但是,您可能会遇到一些意外情况,即 ElasticSearch 自动检测到错误的字段类型。

一个常见的示例是检测整数,因为字段的第一个示例是数字(“25”),而实际上该字段的其余数据是字符串。或者当其余数据实际上是浮点数时看到一个整数。等等等等。

如果您的数据标准化得很好,那不是什么大问题。

或者,您可以使用动态模板将映射应用到基于正则表达式模式的新字段。

于 2013-01-18T14:54:50.533 回答