Elasticsearch 多字段映射:使用多个名称访问同一字段

使用多字段映射可以让一个字段拥有多个名称,方便不同类型的查询。例如,您可以为一个name字段创建keyword类型和pinyin类型的子字段,分别用于精确匹配和拼音模糊匹配。

设置多字段映射

可以通过在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分词器。

索引数据

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

查询数据

使用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类型字段。

总结

多字段映射可以为一个字段提供多种查询方式,提高搜索的灵活性。通过合理运用多字段映射,您可以根据不同的搜索需求选择合适的字段进行查询,实现更精准的搜索结果。

Elasticsearch 多字段映射:使用多个名称访问同一字段

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

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