【问题标题】:Add mapping on elastic search index field在弹性搜索索引字段上添加映射
【发布时间】:2018-03-14 20:44:51
【问题描述】:

我想为 elasticsearch 文档中的搜索电子邮件字段添加分析器 uax_url_email。但是,我得到了错误。

这是我用来创建此索引的代码

  {
        "user": {
          "aliases": {},
          "mappings": {
            "user": {
              "properties": {
                "created": {
                  "type": "date"
                },
                "email": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            }
          },
          "settings": {
            "index": {
              "number_of_shards": "5",
              "provided_name": "user",
              "creation_date": "1521016015646",
              "analysis": {
                "analyzer": {
                  "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                  }
                },
                "tokenizer": {
                  "my_tokenizer": {
                    "type": "uax_url_email",
                    "max_token_length": "255"
                  }
                }
              },
              "number_of_replicas": "1",
              "uuid": "RS96V9gFQbG5UmoQ2R_gLA",
              "version": {
                "created": "6010099"
              }
            }
          }
        }
      }

PUT /user/_mapping/email

{
  "mappings": {
    "_doc": {
      "properties": {
        "email": { 
          "type": "text",
          "fields": {
            "my_analyzer": { 
              "email":     "text",
              "analyzer": "my_analyzer"
            }
          }
        }
      }
    }
  }
}

我收到一条错误提示“root_cause”:

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Root mapping definition has unsupported parameters:  [mappings : {_doc={properties={email={type=text, fields={my_analyzer={email=text, analyzer=my_analyzer}}}}}}]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Root mapping definition has unsupported parameters:  [mappings : {_doc={properties={email={type=text, fields={my_analyzer={email=text, analyzer=my_analyzer}}}}}}]"
  },
  "status": 400
}

什么都找不到。我希望我的分析器和标记器在电子邮件字段上工作,任何帮助将不胜感激

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    这应该可行:

    PUT /user/_mapping/user
    {
      "properties": {
        "email": {
          "type": "text",
          "fields": {
            "my_analyzer": {
              "type": "text",
              "analyzer": "my_analyzer"
            }
          }
        }
      }
    }
    

    您的错误是您认为索引类型是_doc,但是查看您的映射,索引类型是user。基本上,您有一个 user 索引和 user 类型。

    命令格式为PUT /[INDEX_NAME]/_mapping/[TYPE_NAME] {"properties:" { "[FIELD_TO_BE_UPDATED]": {....} } }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      相关资源
      最近更新 更多