设置字段的规范化器 [英] Set normalizer for field

查看:53
本文介绍了设置字段的规范化器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的查询:

  {设置":{分析": {分析器":{折叠式的": {"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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆