elasticsearch 的默认规范器,无需显式映射即可应用于所有关键字字段
Default Normalizer of elasticsearch that can be applied to all keyword fileds without explicitly mapping
我创建了一个名为 'default' 的自定义规范化器和自定义分析器作为我的索引模板的一部分。
我可以看到默认分析器正在自动应用于所有字段,但规范化器没有。
有没有其他方法可以实现将此默认规范化器应用于所有字段?
我的最终目标是使用规范化器以不区分大小写的方式搜索关键字类型的字段
PS: 我的名称为 default 的自定义分析器将所有字段作为关键字。
我的设置:
settings : {
"index" : {
"analysis" :{
"normalizer": {
"default" : {
"type": "custom",
"char_filter":[],
"filter" : ["lowercase"]
}
},
"analyzer":{
"default":
{
"type":"keyword"
}
}
}
}
}
利用 dynamic templates 来实现您想要的效果会容易得多。只需按如下方式创建您的映射:
PUT my-index
{
"settings": {
...
},
"mappings": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword",
"ignore_above": 256,
"normalizer": "default"
}
}
}
]
}
}
这样,每个字符串字段都将被映射为使用 default
规范化器的 keyword
(不过不必这样命名)
我创建了一个名为 'default' 的自定义规范化器和自定义分析器作为我的索引模板的一部分。 我可以看到默认分析器正在自动应用于所有字段,但规范化器没有。
有没有其他方法可以实现将此默认规范化器应用于所有字段?
我的最终目标是使用规范化器以不区分大小写的方式搜索关键字类型的字段
PS: 我的名称为 default 的自定义分析器将所有字段作为关键字。
我的设置:
settings : {
"index" : {
"analysis" :{
"normalizer": {
"default" : {
"type": "custom",
"char_filter":[],
"filter" : ["lowercase"]
}
},
"analyzer":{
"default":
{
"type":"keyword"
}
}
}
}
}
利用 dynamic templates 来实现您想要的效果会容易得多。只需按如下方式创建您的映射:
PUT my-index
{
"settings": {
...
},
"mappings": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword",
"ignore_above": 256,
"normalizer": "default"
}
}
}
]
}
}
这样,每个字符串字段都将被映射为使用 default
规范化器的 keyword
(不过不必这样命名)