我想在elasticsearch中编写一个模板,将所有strng更改为未分析。 official documentation显示我可以使用
执行此操作"properties": {
"host_name": {
"type": "string",
"index": "not_analyzed"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
但问题在于我需要为每个字段执行此操作,例如host_name
。我尝试使用_all
和__all
,但似乎没有用。如何使用自定义模板更改未分析的所有字符串?
答案 0 :(得分:2)
对于已经存在的索引,您无法更改已存在的字段的映射,即使可以,也需要重新索引所有文档,以便它们可以遵守新的映射规则。
否则,如果您只是创建索引:
PUT /_template/not_analyzed_strings
{
"template": "xxx-*",
"order": 0,
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"mapping": {
"index": "not_analyzed",
"type": "string"
},
"match_mapping_type": "string",
"match": "*"
}
}
]
}
}
}