我正在创建这样的映射
"institution" : {
"properties" : {
"InstitutionCode" : {
"type" : "string",
"store" : "yes"
},
"InstitutionID" : {
"type" : "integer",
"store" : "yes"
},
"Name" : {
"type" : "string",
"store" : "yes"
}
}
}
但是,当我为机构执行实际的索引操作时,我会添加一个Alias属性(每个机构有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"
}
}
}
这实际上是一个简化的例子,因为我实际上在记录的实际索引中添加了多个字段而不仅仅是别名。
在绘图创建过程中完全定义映射有多重要?
由于机构记录的附加属性索引,我在索引操作期间自动调整映射是否会受到任何处罚?我希望机构随着时间的推移获得额外的属性,我想知道除了机构索引代码之外我是否还需要维护映射创建代码。
答案 0 :(得分:3)
我认为动态映射的开销几乎可以忽略不计......使用它们不会影响索引速度。但是,您可能会遇到一些意外情况,其中ElasticSearch会错误地自动检测字段类型。
一个常见的例子是检测整数,因为字段的第一个例子是数字(“25”),而实际上该字段的其余数据是一个字符串。或者当其余数据实际上是浮点数时看到一个整数。等等。
如果您的数据标准化得很好,那就不是问题了。
或者,您可以使用dynamic templates根据正则表达式模式将映射应用于新字段。