设置字段的规范化器 [英] Set normalizer for field
本文介绍了设置字段的规范化器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的查询:
{设置":{分析": {分析器":{折叠式的": {"tokenizer":空白",过滤器":[小写字母","asciifolding"]}},规范化工具":{"lowerasciinormalizer":{"type":"custom",过滤器":[小写字母","asciifolding"]}}}},映射":{实体": {特性": {描述": {"type":文字","analyzer":空白","normalizer":"lowerasciinormalizer"},名称": {"type":文字","analyzer":空白","normalizer":"lowerasciinormalizer"}}}}}
实体
是索引中的一种类型.我收到错误消息:
{错误": {根本原因": [{"type":"mapper_parsing_exception","reason":"[Description]的映射定义具有不受支持的参数:[normalizer:lowerasciinormalizer]"}],"type":"mapper_parsing_exception","reason":无法解析映射[entity]:[Description]的映射定义具有不受支持的参数:[normalizer:lowerasciinormalizer]","caused_by":{"type":"mapper_parsing_exception","reason":"[Description]的映射定义具有不受支持的参数:[normalizer:lowerasciinormalizer]"}},状态":400}
我该如何解决?
解决方案
Normalizer保证它产生单个标记,并且只能应用于关键字类型字段,而不能应用于文本类型字段.您可以执行的操作是将 fields
添加到属性中,该属性的字段类型为 keyword
,然后对其应用标记化器.
这是修改映射的方法:
{设置":{分析": {分析器":{折叠式的": {"tokenizer":空白",筛选": [小写","asciifolding"]}},规范化工具":{"lowerasciinormalizer":{"type":"custom",筛选": [小写","asciifolding"]}}}},映射":{实体": {特性": {描述": {"type":文字","analyzer":空白",字段":{关键字":{"type":关键字","normalizer":"lowerasciinormalizer"}}},名称": {"type":文字","analyzer":空白",字段":{关键字":{"type":关键字","normalizer":"lowerasciinormalizer"}}}}}}}
Here is my query:
{
"settings": {
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "whitespace",
"filter": [ "lowercase", "asciifolding" ]
}
},
"normalizer": {
"lowerasciinormalizer": {
"type": "custom",
"filter": [ "lowercase", "asciifolding" ]
}
}
}
},
"mappings": {
"entity": {
"properties": {
"Description": {
"type": "text",
"analyzer": "whitespace",
"normalizer": "lowerasciinormalizer"
},
"Name": {
"type": "text",
"analyzer": "whitespace",
"normalizer": "lowerasciinormalizer"
}
}
}
}
}
entity
is a type in the index.
I get error message:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "Mapping definition for [Description] has unsupported parameters: [normalizer : lowerasciinormalizer]"
}
],
"type": "mapper_parsing_exception",
"reason": "Failed to parse mapping [entity]: Mapping definition for [Description] has unsupported parameters: [normalizer : lowerasciinormalizer]",
"caused_by": {
"type": "mapper_parsing_exception",
"reason": "Mapping definition for [Description] has unsupported parameters: [normalizer : lowerasciinormalizer]"
}
},
"status": 400
}
How can I fix it ?
解决方案
Normalizer guarantees that it produces a single token and can be applied to keyword type fields only and can't be applied for text type field. What you can do is add fields
to property with a field of type keyword
and apply tokenizer to it.
This is how you can modify the mapping:
{
"settings": {
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]
}
},
"normalizer": {
"lowerasciinormalizer": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"entity": {
"properties": {
"Description": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
},
"Name": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
}
}
}
}
}
这篇关于设置字段的规范化器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文