我的索引中有很多字段,字段名称以_count结尾(例如page_count
,order_count
等),我一直希望这些字段为long
。我尝试创建我认为是默认映射的内容如下:
{
"mappings": {
"_default_": {
"_all": {
"enabled": false,
"norms": {
"enabled": false
}
},
"properties": {
"*_count": {
"type": "long"
}
}
}
},
"settings": {
"index.query.default_field": "message",
"number_of_replicas": 2,
"number_of_shards": 3
},
"template": "core-app-*"
}
然而,这似乎不起作用,因为我现在在我最近的索引中有字符串字段:
"page_count":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
这是基于通配符创建映射的正确方法吗?我假设不是因为它似乎不起作用......:)
答案 0 :(得分:0)
您可以使用elasticsearch中的dynamic templates
功能来实现它。
PUT _template/core-app-template
{
"template": "core-app-*",
"settings": {
"index.query.default_field": "message",
"number_of_replicas": 2,
"number_of_shards": 3
},
"mappings": {
"_default_": {
"_all": {
"enabled": false,
"norms": {
"enabled": false
}
}
},
"my_type": {
"dynamic_templates": [
{
"_count_as_long": {
"match_mapping_type": "*",
"match": "*_count",
"mapping": {
"type": "long"
}
}
}
]
}
}
}
注意:在上面的示例中注意index_type
我自由地将其定义为my_type
,因此当您创建此index template
时,请使用您的实际index_type
1}}代替my_type