可以通过在mapping中设置"fields"属性来实现一个字段使用多个名字。具体操作步骤如下:

  1. 创建一个索引并设置mapping
PUT my_index
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          },
          "pinyin": {
            "type": "text",
            "analyzer": "pinyin_analyzer"
          }
        }
      }
    }
  }
}
  1. 在mapping中设置fields属性,其中"keyword"表示使用keyword类型,"pinyin"表示使用pinyin_analyzer分词器

  2. 在索引中添加数据

PUT my_index/_doc/1
{
  "name": "张三",
  "name.keyword": "Zhang San",
  "name.pinyin": "zhāng sān"
}
  1. 查询数据

使用match查询:

GET my_index/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  }
}

使用term查询:

GET my_index/_search
{
  "query": {
    "term": {
      "name.keyword": "Zhang San"
    }
  }
}

使用match查询拼音:

GET my_index/_search
{
  "query": {
    "match": {
      "name.pinyin": "zhangsan"
    }
  }
}

注意:在查询时,需要根据实际情况选择使用哪个字段。如果需要精确匹配,使用"keyword"类型字段;如果需要模糊匹配,使用"text"类型字段

es 一个字段使用多个名字 设置mapping

原文地址: https://www.cveoy.top/t/topic/htFL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录