elasticsearch 设置自定义分析器时出现问题,无法解析Map错误

esyap4oy  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(140)

设置自定义分析器时出现以下问题:“phoneNumber”:{
“type”:“关键字”,
“fields”:{
“numvalue”:{
“type”:“long”,
“analyzer”:“phone_analyzer”
}}}
“phone_analyzer”:{
“tokenizer”:“标准”,
“char_filter”:[“电话号码”]}
“char_filter”:{
“电话号码”:{
“type”:“模式替换”,
“模式”:“[^0-9]",
“替换”:“”
}}
所以基本上我的意图是让“原始值”仍然被用作关键字,同时我创建了一个名为numvalue的新字段,其中它是长的,并使用带有chat_filter的自定义分析器,将所有非数字值替换为“”(没有空格)。因此,如果事情顺利,我的前端将检索原始值-与-或+或任何和我的后端搜索将使用“numvalue”在范围搜索。
当我运行它时,我确实得到了“mapper_parsing_exception”“无法解析类型为[long]的mapper [numvalue]上的Map[_doc]未知参数[analyzer]状态400。
周围还有其他分析师。你知道为什么吗我正在使用7.* 进行Elastic搜索B

ie3xauqp

ie3xauqp1#

文件:
每个字段都有一个字段数据类型或字段类型。此类型指示字段包含的数据类型(如字符串或布尔值)及其预期用途。例如,可以将字符串索引到文本字段和关键字字段。但是,将分析文本字段值以进行全文搜索,而保留关键字字符串以进行筛选和排序。
将long类型更改为Text。只有文本类型与分析器一起工作。
查询

GET idx_test/_search
{
  "query": {
    "range": {
      "phoneNumber.numvalue": {
        "gte": 55343457
      }
    }
  }
}

Map

PUT idx_test
{
  "settings": {
    "analysis": {
      "char_filter": {
        "phone_number": {
          "type": "pattern_replace",
          "pattern": "[^0-9]",
          "replacement": ""
        }
      },
      "analyzer": {
        "phone_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "phone_number"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "phoneNumber": {
        "type": "keyword",
        "fields": {
          "numvalue": {
            "type": "text",
            "analyzer": "phone_analyzer"
          }
        }
      }
    }
  }
}

POST idx_test/_doc
{
  "phoneNumber":"+553434-56"
}

相关问题