elasticsearch 动态模板是否支持默认类型?
允许您根据以下内容定义可应用于动态添加字段的自定义映射:
elasticsearch 动态模板是否支持默认类型?,
elasticsearch,mapping,
elasticsearch,Mapping,允许您根据以下内容定义可应用于动态添加字段的自定义映射: Elasticsearch检测到的数据类型,具有匹配映射类型 字段的名称,带有匹配和取消匹配或匹配模式 字段的完整虚线路径,带有路径匹配和路径取消匹配 我试图为所有字段设置一个默认类型关键字,而一些带有特定*后缀或前缀*的特殊字段可以指定如下类型,但结果所有字段最终都意外地成为关键字 { "order": 99, "index_patterns": [ "xxxx_st
- Elasticsearch检测到的数据类型,具有匹配映射类型
- 字段的名称,带有匹配和取消匹配或匹配模式
- 字段的完整虚线路径,带有路径匹配和路径取消匹配
关键字
,而一些带有特定*后缀
或前缀*
的特殊字段可以指定如下类型,但结果所有字段最终都意外地成为关键字
{
"order": 99,
"index_patterns": [
"xxxx_stats_*"
],
"settings": {
"index": {
"number_of_shards": "6",
"number_of_replicas": "1"
}
},
"mappings": {
"_doc": {
"dynamic": true,
"_source": {
"enabled": true
},
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "*",
"unmatch": [
"*Time",
"*At",
"is*"
],
"mapping": {
"ignore_above": 256,
"null_value": "NULL",
"type": "keyword"
}
}
},
{
"timeSuffix": {
"match_mapping_type": "*",
"match": [
"*Time",
"*At"
],
"mapping": {
"type": "long"
}
}
},
{
"isPrefix": {
"match_mapping_type": "*",
"match": "is*",
"mapping": {
"type": "boolean"
}
}
}
],
"date_detection": false,
"numeric_detection": true
}
},
"aliases": {
"{index}-alias": {
}
}
}
AFAIK
match
和unmatch
不能是数组,只能是字符串或正则表达式。所以试试这个:
{
"dynamic_templates":[
{
"timeSuffix":{
"match_mapping_type":"*",
"match_pattern":"regex",
"match":"^(.*Time)|(.*At)$",
"mapping":{
"type":"long"
}
}
},
{
"isPrefix":{
"match_mapping_type":"*",
"match":"is*",
"mapping":{
"type":"boolean"
}
}
},
{
"strings":{
"match_mapping_type":"*",
"mapping":{
"ignore_above":256,
"null_value":"NULL",
"type":"keyword"
}
}
}
]
}
我还发现,当您将
字符串
移到底部时,上面的两个映射将首先得到解决。否则,由于每个段都包括match\u mapping\u type:“*”
,因此将应用第一个匹配段。这可能是相关的。AFAIKmatch
和unmatch
不能是数组,只能是字符串或正则表达式。请尝试以下操作:
{
"dynamic_templates":[
{
"timeSuffix":{
"match_mapping_type":"*",
"match_pattern":"regex",
"match":"^(.*Time)|(.*At)$",
"mapping":{
"type":"long"
}
}
},
{
"isPrefix":{
"match_mapping_type":"*",
"match":"is*",
"mapping":{
"type":"boolean"
}
}
},
{
"strings":{
"match_mapping_type":"*",
"mapping":{
"ignore_above":256,
"null_value":"NULL",
"type":"keyword"
}
}
}
]
}
我还发现,当您将
字符串
移到底部时,将首先解析上面的2个映射。否则,由于每个段都包含匹配映射类型“:“*”
,因此将应用第一个匹配段。这可能与此相关。仅供参考,我建议将类似日期的字段映射到类型日期
,不要太长。竖起大拇指!Joe感谢您的帮助,了解regex
的工作方式非常有帮助。至于日期
,它有点无处不在,我必须使用时间戳
来遵循惯例;(无论如何,谢谢你的额外建议。好的,没问题!你当然可以在日期中使用时间戳:仅供参考,我建议将类似日期的字段映射到类型date
,不要太长。竖起大拇指!乔感谢你的帮助,了解正则表达式的工作方式非常有帮助。至于日期,它几乎是每个人都使用的。)re,我必须使用时间戳来遵循例程;(无论如何,谢谢你的额外建议。好的,没问题!你当然可以在日期中使用时间戳: