程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 搜索数据库 - ElasticSearch

    • ElasticSearch - 基础概念
    • ElasticSearch - 安装
    • ElasticSearch - 索引操作
    • ElasticSearch - 映射操作
      • 1. 映射的基本原理
        • 映射的作用
        • 映射的组成
      • 2. 创建映射(PUT 请求)
        • Postman 操作:创建映射
        • 第一步:创建 student 索引
        • 第二步:为 student 索引添加映射
        • 映射字段详细说明
        • 字段属性详细说明
        • Kibana 操作:创建映射
      • 3. 查看映射(GET 请求)
        • Postman 操作:查看映射
        • Kibana 操作:查看映射
      • 4. 创建带映射的新索引
        • Postman 操作:创建带映射的新索引
        • Kibana 操作:创建带映射的新索引
      • 5. 总结
    • ElasticSearch - 文档操作
    • ElasticSearch - 高级操作
    • ElasticSearch - 倒排索引
    • ElasticSearch - 分词器
    • ElasticSearch - Java操作
    • ElasticSearch - 多框架集成
    • ElasticSearch - 搭建集群
    • ElasticSearch - 进阶概念
    • ElasticSearch - 分布式集群和路由计算
    • ElasticSearch - 分片控制流程
    • ElasticSearch - 分片操作原理
    • ElasticSearch - 多种分析器
    • ElasticSearch - 冲突问题处理
    • ElasticSearch - 进阶优化
    • ElasticSearch - 面试题
  • 搜索数据库 - ElasticSearch
  • 搜索数据库 - ElasticSearch
scholar
2024-09-16
目录

ElasticSearch - 映射操作

# ElasticSearch - 映射基本操作

  • 1. 映射的基本原理
    • 映射的作用
    • 映射的组成
  • 2. 创建映射(PUT 请求)
    • Postman 操作:创建映射
    • Kibana 操作:创建映射
  • 3. 查看映射(GET 请求)
    • Postman 操作:查看映射
    • Kibana 操作:查看映射
  • 4. 创建带映射的新索引
    • Postman 操作:创建带映射的新索引
    • Kibana 操作:创建带映射的新索引
  • 5. 总结

映射(Mapping)是定义 Elasticsearch 中索引字段及其属性的过程,类似于关系型数据库中的表结构定义。通过映射,用户可以指定字段的数据类型、索引方式、分词规则等,这对于优化数据存储和提高查询性能非常重要。Elasticsearch 的灵活映射功能可以帮助用户根据不同的应用场景进行高效的数据管理和搜索。


# 1. 映射的基本原理

映射(Mapping)在 Elasticsearch 中用于描述索引中文档的字段类型及其属性,类似于关系型数据库中表的定义。它通过预定义的规则告诉 Elasticsearch 如何存储和索引每个字段。

# 映射的作用

映射主要用于以下几个方面:

  1. 字段类型定义:指定每个字段的类型,如 text、keyword、integer、date 等。字段类型决定了数据的存储方式和查询方法。

  2. 索引选项:定义字段是否需要索引。如果字段被索引,用户可以基于该字段进行查询;如果不被索引,则无法基于该字段进行搜索。

  3. 分词控制:对于 text 类型的字段,映射可以指定分词器,用于将文本数据分解为可查询的词组。这对于全文搜索非常有用。

  4. 存储优化:映射可以指定是否将某些字段独立存储,以提升查询速度,尽管这可能会增加存储开销。

# 映射的组成

  • 字段类型:定义字段的数据类型,如 text(文本)、keyword(关键字)、long(长整型)、date(日期型)等。

  • 索引选项:指定字段是否参与索引,如 index: true 表示字段可被索引,index: false 表示字段不参与索引。

  • 分词器:指定如何对 text 类型字段进行分词,常见分词器包括 standard、whitespace、ik_max_word 等。

  • 存储选项:字段可以通过 store: true 实现独立存储,提升查询速度,但会增加存储开销。


# 2. 创建映射(PUT 请求)

映射可以通过 PUT 请求创建,在创建索引时指定字段类型及其属性,以优化存储和查询性能。

# Postman 操作:创建映射

操作目的:为 student 索引创建映射,定义 name、sex 和 age 三个字段的类型及其属性。

  • 请求 URL: http://127.0.0.1:9200/student/_mapping
  • 请求方法: PUT

# 第一步:创建 student 索引

在设置映射之前,首先要创建 student 索引:

  • 请求 URL: http://127.0.0.1:9200/student
  • 请求方法: PUT

创建索引成功后的截图如下:

image-20211114202006774

# 第二步:为 student 索引添加映射

请求体内容:

{
    "properties": {
        "name": {
            "type": "text",           // 定义字段类型为 text,适合存储大段文本,可进行分词
            "index": true             // 该字段将被索引,支持模糊搜索和全文检索
        },
        "sex": {
            "type": "keyword",        // 定义字段类型为 keyword,不进行分词,适合精确匹配
            "index": true             // 该字段将被索引,允许基于性别进行搜索
        },
        "age": {
            "type": "integer",        // 定义字段类型为 integer,存储整数类型
            "index": false            // 该字段不参与索引,无法基于年龄进行搜索
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

发送请求的操作截图如下:

image-20211117163123228

# 映射字段详细说明

  1. name 字段:

    • type: text:定义为 text 类型,适合存储大段文本内容,允许分词。分词后,Elasticsearch 可以根据文本内容的部分进行模糊查询或全文检索。
    • index: true:开启索引,允许基于 name 字段进行搜索。
  2. sex 字段:

    • type: keyword:定义为 keyword 类型,不进行分词。适用于固定枚举值(如性别、状态码等)的精确匹配查询。
    • index: true:开启索引,允许基于 sex 字段进行搜索或聚合操作。
  3. age 字段:

    • type: integer:定义为整数类型,适合存储年龄等数值字段。
    • index: false:该字段不被索引,不能基于该字段进行搜索。

# 字段属性详细说明

  • type:定义字段的数据类型。常见类型包括:

    • text:用于存储大段文本内容,支持分词和全文搜索。
    • keyword:用于存储不需要分词的文本,适合精确匹配。
    • integer、long、double:数值类型,分别对应不同大小的整数和浮点数。
    • date:日期类型,支持日期格式存储。
  • index:决定字段是否参与索引。

    • true:字段被索引,允许基于该字段进行搜索。
    • false:字段不被索引,不能基于该字段搜索。
  • analyzer:指定分词器,用于对 text 字段进行分词。常用分词器包括:

    • standard:标准分词器,将文本按空格、标点符号等拆分。
    • whitespace:基于空格分词。
    • ik_max_word:中文分词器,能识别中文短语并进行分词。

# Kibana 操作:创建映射

在 Kibana 中,可以通过以下命令为索引添加映射:

PUT /student/_mapping
{
    "properties": {
        "name": {
            "type": "text",
            "index": true
        },
        "sex": {
            "type": "keyword",
            "index": true
        },
        "age": {
            "type": "integer",
            "index": false
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 3. 查看映射(GET 请求)

可以通过 GET 请求查看已创建的映射,以了解索引的字段结构及其属性。

# Postman 操作:查看映射

操作目的:查看 student 索引的映射,了解字段类型及其索引状态。

  • 请求 URL: http://127.0.0.1:9200/student/_mapping
  • 请求方法: GET

请求发送后的截图如下:

image-20211114202420743

响应内容解释

{
    "student": {
        "mappings": {
            "properties": {
                "name": {
                    "type": "text",     // name 字段为文本类型
                    "index": true       // 该字段会被索引
                },
                "sex": {
                    "type": "keyword",  // sex 字段为 keyword 类型
                    "index": true       // 该字段会被索引
                },
                "age": {
                    "type": "integer",  // age 字段为整数类型
                    "index": false      // 该字段不会被索引
                }
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# Kibana 操作:查看映射

在 Kibana 中可以使用以下命令查看索引的映射:

GET /student/_mapping
1

# 4. 创建带映射的新索引

在创建新索引时,可以直接定义字段的映射,从而使索引创建时就具备优化的数据存储和查询能力。

# Postman 操作:创建带映射的新索引

操作目的:创建新索引 student1,并指定 name、sex、age 字段的映射。

  • 请求 URL: http://127.0.0.1:9200/student1
  • 请求方法: PUT

请求体内容

{
    "settings": {},               // 索引的配置信息
    "mappings": {
        "properties": {
            "name": {
                "

type": "text",    // 定义 name 字段为文本类型
                "index": true      // 该字段会被索引
            },
            "sex": {
                "type": "text",    // 定义 sex 字段为文本类型
                "index": false     // 该字段不会被索引
            },
            "age": {
                "type": "long",    // 定义 age 字段为 long 类型
                "index": false     // 该字段不会被索引
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

发送请求后的截图如下:

image-20211114202722052

# Kibana 操作:创建带映射的新索引

在 Kibana 中可以通过以下命令创建带映射的新索引:

PUT /student1
{
    "settings": {},
    "mappings": {
        "properties": {
            "name": {
                "type": "text",
                "index": true
            },
            "sex": {
                "type": "text",
                "index": false
            },
            "age": {
                "type": "long",
                "index": false
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 5. 总结

  • 映射的作用:映射决定了索引中的字段类型、索引方式和存储方式,帮助 Elasticsearch 优化数据存储和检索。

  • 字段类型:

    • text:适合大段文本,支持分词和全文检索。
    • keyword:用于精确匹配,不进行分词。
    • integer、long:用于数值类型,适合统计和计算。
  • 索引属性:

    • index: true:字段会被索引,允许搜索。
    • index: false:字段不参与索引,不能基于该字段搜索。
  • 独立存储:可以通过 store: true 设置字段为独立存储,提升查询速度,但会增加存储开销。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
ElasticSearch - 索引操作
ElasticSearch - 文档操作

← ElasticSearch - 索引操作 ElasticSearch - 文档操作→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式