我想将以下模板应用于所有字段。 目前,我仅将此映射应用于“名称”字段。
假设我还有更多字段,例如:“resedential_address”,“work_address”,“birth_place”,“DOB”等。
我怎样才能以有效的方式做到这一点。我知道我可以为所有字段重复相同的块。 或者有哪种方法可以将以下模板应用于所有“文本”字段?
{
"template": "*",
"settings": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
},
"analyzer": {
"case_insensitive": {
"tokenizer": "whitespace",
"filter": [
"ngram_filter","lowercase"
]
},
"search_analyzer":{
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"name": {
"type": "string",
"analyzer": "case_insensitive",
"search_analyzer": "search_analyzer"
}
}
}
}
}
提前致谢!
答案 0 :(得分:1)
如果您要使用提供的自定义映射映射所有text
字段,请使用dynamic templates
功能,如下所示:
{
"template": "*",
"settings": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
},
"analyzer": {
"case_insensitive": {
"tokenizer": "whitespace",
"filter": [
"ngram_filter","lowercase"
]
},
"search_analyzer":{
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
}
}
},
"mappings": {
"my_type": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "case_insensitive",
"search_analyzer": "search_analyzer"
}
}
}
]
}
}
}
上面的模板将为所有字符串字段创建相同的自定义映射,例如name, residential_address, work_address ...