五、ElasticSearch 8.6.0 快速使用 - 映射 API 的基本操作

作者: 温新

分类: 【Elasticsearch】

阅读: 1443

时间: 2023-02-22 07:53:10

hi,我是温新,一名 PHPer

ES 版本:ElasticSearch 8.6.0

系统版本:Rocky Linux 9.1

学习目标:掌握映射的 CURD 操作

本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

映射:把它当做 MySQL 中的数据表结构来看。

前情回顾

上篇文章中,添加文档时并没有创建映射,这是因为 ES 中的自动映射。

在 ES 中,创建索引前,不强制要求创建映射,ES 会根据字段的值来推断字段类型,从而自动创建并指定索引类型。

查看映射

1、查看完整映射

语法:

GET /<index_name>/_mappings

案例:

GET ziruchu/_mapping

返回值:

{
  "ziruchu": {
    "mappings": {
      "properties": {
        "age": {
          "type": "long"
        },
        "name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

2、查看索引中指定字段的 _mappings

语法:

GET /<index_name>/_mappings/field/<field_name>

案例:

GET ziruchu/_mapping/field/name

返回值:

{
  "ziruchu": {
    "mappings": {
      "name": {
        "full_name": "name",
        "mapping": {
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

创建映射

语法:

PUT /<index_name>
{
  "mappings": {
    "properties": {
      "field_a": {
        "<parameter_name>": "<parameter_value>"
      },
      ...
    }
  }
}

案例:

PUT arts
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

返回值:

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "arts"
}

修改映射属性

语法:

PUT <index_name>/_mapping
{
  "properties": {
    "<field_name>": {
      "type": "text",	// 必须和原字段类型相同,切不许显式声明
      "analyzer":"ik_max_word",	// 必须和元原词器类型相同,切必须显式声明
      "fielddata": false
    }
  }
}

案例:

# 添加索引
put ziruchu_arts
    
# 再添加映射
PUT ziruchu_arts/_mapping
{
  "properties": {
    "name": {
      "type":"keyword"
    },
    "age":{
      "type":"integer"
    }
  }
}

返回值:

{
  "acknowledged": true
}
请登录后再评论