没有合适的资源?快使用搜索试试~ 我知道了~
Elasticsearch数据映射与类型的全面解析
需积分: 5 1 下载量 136 浏览量
2024-10-17
21:51:11
上传
评论
收藏 37KB DOCX 举报
温馨提示
内容概要:本文详细介绍了Elasticsearch的数据映射和类型,涵盖了核心概念、工作原理、映射的基础与类型详解、动态映射、动态模板、映射元数据以及索引的最佳实践。通过具体示例,解释了如何创建索引、定义映射、索引和搜索文档,帮助读者更好地理解和使用Elasticsearch。 适合人群:具有一定Elasticsearch基础知识的数据工程师、系统管理员和开发者。 使用场景及目标:通过深入理解Elasticsearch的映射和类型,提升数据索引、搜索和分析的效率和准确性,特别是在复杂数据结构和高负载环境下的应用。 阅读建议:本文涉及较多的技术细节和实操步骤,建议边阅读边实践,结合官方文档进一步深入研究。
资源推荐
资源详情
资源评论



























1
Elasticsearch:数据映射与类型
1 Elasticsearch 简介
1.1 Elasticsearch 的核心概念
Elasticsearch 是一个基于 Lucene 的开源搜索和分析引擎,它提供了一个分
布式、多租户的全文搜索引擎,具有 RESTful API 接口。Elasticsearch 的核心概
念包括:
� 文档(Document):Elasticsearch 中的最小可索引单元,通常是一
个 JSON 格式的数据。
� 索引(Index):类似于数据库的概念,用于存储文档的集合。
� 类型(Type):在 Elasticsearch 6.x 及以下版本中,类型用于区分
索引中的不同类别的文档。但在 7.x 版本中,类型的概念已被移除,所
有文档都属于同一个类型。
� 映射(Mapping):定义了索引中文档的结构,类似于数据库中的
表结构。映射可以自动创建,也可以手动定义。
� 字段(Field):文档中的数据单元,每个字段可以有不同的数据类
型,如文本、数字、日期等。
� 集群(Cluster):由一个或多个节点组成的集合,用于存储数据和
提供搜索功能。
� 节点(Node):集群中的服务器实例,每个节点存储数据的一部
分,并参与集群的搜索和索引操作。
1.2 Elasticsearch 的架构与工作原理
Elasticsearch 采用分布式架构,主要由以下几个组件构成:
� 节点(Node):每个节点都是一个运行 Elasticsearch 的服务器,节
点通过网络通信,共同维护集群的状态和数据。
� 主节点(Master Node):负责管理集群的元数据,如索引的创建、
删除,以及节点的加入和离开。
� 数据节点(Data Node):负责存储数据和执行搜索和索引操作。
� 客户端(Client Node):可以执行搜索和索引操作,但不存储数据。
客户端节点可以简化集群的管理,因为它们可以被用来转发请求到数据
节点。
1.2.1 工作原理
1. 数据索引:当数据被索引时,Elasticsearch 会将数据分割成多个分
片(Shard),并分布到集群中的不同节点上。每个分片都是一个独立的
Lucene 索引,可以独立地进行搜索和索引操作。
2. 数据搜索:搜索请求被发送到集群中的一个节点,该节点会将请

2
求转发到所有相关的分片,并收集和合并结果,最后返回给客户端。
3. 数据复制:为了提高数据的可用性和容错性,Elasticsearch 会为每
个分片创建一个或多个副本(Replica)。如果一个节点或分片失败,副本
可以立即接管其功能,确保数据的连续可用性。
1.2.2 示例:创建索引和映射
#
创建一个名为
"my_index"
的索引,并定义一个名为
"my_type"
的类型(在
7.x
及更高版本
中,类型概念已被移除)
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"my_type": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
},
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
'
在上述示例中,我们使用 curl 命令向 Elasticsearch 发送一个 PUT 请求,创
建了一个名为 my_index 的索引。在 settings 部分,我们定义了分片和副本的数
量。在 mappings 部分,我们定义了一个名为 my_type 的类型,并为 title、
content 和 timestamp 字段定义了数据类型和分析器。
1.2.3 示例:索引文档
#
索引一个文档到
"my_index"
索引中
curl -X POST "localhost:9200/my_index/my_type/1" -H 'Content-Type: application/json' -d'

3
{
"title": "Elasticsearch 教程",
"content": "学习如何使用 Elasticsearch 进行数据搜索和分析。",
"timestamp": "2023-01-01 12:00:00"
}
'
在本例中,我们使用 curl 命令向 Elasticsearch 发送一个 POST 请求,将一个
文档索引到 my_index 索引中。文档的 ID 被指定为 1,并且包含了 title、
content 和 timestamp 字段。
1.2.4 示例:搜索文档
#
搜索包含
"
教程
"
的文档
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "教程"
}
}
}
'
在本例中,我们使用 curl 命令向 Elasticsearch 发送一个 GET 请求,搜索
my_index 索引中包含“教程”的文档。搜索结果将返回所有匹配的文档。
通过这些核心概念和工作原理的介绍,以及具体的示例操作,我们可以更
好地理解和使用 Elasticsearch 进行数据的索引、搜索和分析。
2 数据映射基础
2.1 映射的定义与作用
在 Elasticsearch 中,映射(mapping)是索引(index)中类型(type)的定义,它描
述了文档(document)的结构和字段(field)的数据类型。映射类似于关系型数据库
中的表结构,它定义了字段的名称、类型以及如何对字段进行分析和存储。映
射的作用主要体现在以下几个方面:
� 数据类型定义:指定字段的数据类型,如字符串、整数、日期等。
� 字段分析:定义字段如何被分析,例如是否分词、使用哪种分析
器等。
� 存储优化:指定字段是否存储,以及存储方式,以优化查询性能。
� 数据验证:在索引文档时,Elasticsearch 会根据映射定义验证数据
的格式和类型。

4
2.1.1 示例:手动创建映射
假设我们有一个博客索引,其中包含标题、作者和发布日期等字段,我们
可以手动定义映射如下:
PUT /blogs
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
},
"author": {
"type": "keyword"
},
"publish_date": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}
在这个映射中,title 字段被定义为 text 类型,使用 standard 分析器进行分
词;author 字段被定义为 keyword 类型,通常用于不需要分词的字段;
publish_date 字段被定义为 date 类型,并指定了日期格式。
2.2 自动映射与手动映射
Elasticsearch 在索引文档时,如果索引中没有预先定义的映射,它会自动创
建映射。这种自动映射基于文档中的字段类型和数据。然而,自动映射可能不
会总是产生最理想的映射,因为它可能无法正确识别字段的类型或分析需求。
2.2.1 自动映射
当索引第一个文档时,Elasticsearch 会根据文档中的字段自动创建映射。例
如,如果文档中包含一个字符串字段和一个日期字段,Elasticsearch 会自动将字
符串字段映射为 text 或 keyword 类型,将日期字段映射为 date 类型。
POST /blogs/_doc
{
"title": "我的第一篇博客",
"author": "张三",
"publish_date": "2023-01-01"
}

5
在上述例子中,如果 blogs 索引之前没有定义映射,Elasticsearch 会自动创
建映射,将 title 和 author 字段映射为 text 和 keyword 类型,publish_date 字段
映射为 date 类型。
2.2.2 手动映射
手动映射允许我们更精细地控制字段的类型和分析方式,确保索引的文档
能够以最有效的方式被搜索和查询。例如,我们可能希望 title 字段在搜索时能
够进行更复杂的分词处理,或者 publish_date 字段能够支持更灵活的日期格式。
PUT /blogs
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"author": {
"type": "keyword"
},
"publish_date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd"
}
}
}
}
在这个手动映射中,title 字段使用了 ik_max_word 分析器,这在中文分词
中非常常见,能够更准确地进行中文文本的分词;publish_date 字段支持了更灵
活的日期格式,包括小时和分钟。
手动映射提供了更高的灵活性和控制力,是构建高效、可扩展的
Elasticsearch 索引的关键。
3 Elasticsearch:数据映射与类型
3.1 映射类型详解
3.1.1 基本数据类型介绍
在 Elasticsearch 中,数据映射是索引文档结构的关键,它定义了文档中字
段的数据类型和映射规则。理解基本数据类型对于正确地索引和查询数据至关
重要。Elasticsearch 支持多种基本数据类型,包括但不限于:
� text:用于全文搜索的字符串字段,如文章内容。
剩余33页未读,继续阅读
资源评论



zhubeibei168
- 粉丝: 2w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- COMSOL模拟中二氧化碳地质封存与盖层密封性的两相流固耦合研究
- 基于ASP-NET框架开发的学生成绩与课程管理系统-学生信息管理-成绩录入与查询-课程安排与选课-教师管理模块-数据统计分析功能-用户权限控制-数据库备份与恢复-用于高校或中小学教.zip
- 西门子Smart200 PLC 485通讯与Modbus RTU协议控制多设备的新手指南
- 电-气-热综合能源系统耦合优化调度仿真研究:基于MATLAB YALMIP与CPLEX的精准建模与调度策略分析
- 扩展有限元XFEM模型在Abaqus中的二维、三维裂纹扩展模拟及JC源程序实现
- 从安卓QQ数据库提取聊天记录的Python工具-2020年安卓QQ830版本聊天记录数据提取与解析脚本-通过ROOT权限获取Sqlite3数据库文件并解码Base64编码的聊天.zip
- 基于 STM32 控制器的私有项目激光器指标检测平台
- COMSOL模拟二维轴对称模型下冻土水热力三场耦合问题 冻土工程
- 污水池液位智能控制程序:基于三菱FX3G与中达优控触摸屏的解决方案
- Some Useful Tools for Object Detection in Remote Sensing Imagery. 一些遥感图像目标检测的实用代码及工具,不断更新中
- 西门子S7-1200 PLC双轴算法控制程序:灵活高效的电池焊接解决方案 · HMI 实用版
- 基于红外、可见光双光源的车辆目标检测
- 威纶通触摸屏定时锁屏程序:宏指令控制,注释清晰,方便理解,适用于所有型号触摸屏,具有学习价值和借鉴意义。
- 基于PLC与博途1200仿真的全自动洗衣机控制系统设计及其实现
- 英语词汇表格式化工具-爱词霸API调用-音标提取-单词释义格式化-Excel导出-中文学习者友好界面-教师备课辅助-自动排版美化-批量处理功能-支持自定义模板-云端同步存储-多格式.zip
- 密歇根大学PEMFC模型:基于MatlabSimulink平台的燃料电池系统建模与仿真
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
