分布式系列教程(35) -ElasticSearch文档映射
2023-09-11 14:15:40 时间
1. 文档映射
已经把ElasticSearch的核心概念和关系数据库做了一个对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构。
关系型数据库 | ElasticSearch |
---|---|
数据库(DB) | 索引(Index) |
表(Table) | 类型(type) |
行(Row) | 文档(Docments) |
列(Columns) | 字段(Fields) |
ElasticSearch中的映射(Mapping)用来定义一个文档,可以定义所包含的字段以及字段的类型、分词器及属性等等。
文档映射就是给文档中的字段指定字段类型、分词器。
使用方式:GET /user_dao/user_table/_mapping
2. 映射的分类
动态映射:
- 我们知道,在关系数据库中,需要事先创建数据库,然后在该数据库实例下创建数据表,然后才能在该数据表中插入数据。而ElasticSearch中不需要事先定义映射(Mapping),文档写入ElasticSearch时,会根据文档字段自动识别类型,这种机制称之为动态映射。
静态映射:
- 在ElasticSearch中也可以事先定义好映射,包含文档的各个字段及其类型等,这种方式称之为静态映射。
3. ES类型支持
3.1 基本类型
字符串:string,string类型包含 text 和 keyword。
- text:该类型被用来索引长文本,在创建索引前会将这些文本进行分词,转化为词的组合,建立索引;允许es来检索这些词,text类型不能用来排序和聚合。
- keyword:该类型不需要进行分词,可以被用来检索过滤、排序和聚合,keyword类型自读那只能用本身来进行检索(不可用text分词后的模糊检索)。 注意: keyword类型不能分词,Text类型可以分词查询。
数指型:long、integer、short、byte、double、float
日期型:date
布尔型:boolean
二进制型:binary
数组类型:Array datatype
3.2 复杂类型
地理位置类型(Geo datatypes):
- 地理坐标类型(Geo-point datatype):geo_point 用于经纬度坐标
- 地理形状类型(Geo-Shape datatype):geo_shape 用于类似于多边形的复杂形状
特定类型(Specialised datatypes):
- Pv4 类型(IPv4 datatype):ip 用于IPv4 地址
- Completion 类型(Completion datatype):completion 提供自动补全建议
- Token count 类型(Token count datatype):token_count 用于统计做子标记的字段的index数目,该值会一直增加,不会因为过滤条件而减少
- mapper-murmur3 类型:通过插件,可以通过_murmur3_来计算index的哈希值
- 附加类型(Attachment datatype):采用mapper-attachments插件,可支_attachments_索引,例如 Microsoft office 格式,Open Documnet 格式, ePub,HTML等
4. 创建文档类型并且指定类型
Analyzer 索引分词器,索引创建的时候使用的分词器。 比如:ik_smart(Search_analyzer 搜索字段的值时,指定的分词器 )
具体代码如下:
1.指定之前,如果含有之前的索引,必须先删除:
DELETE /user_dao
2.然后添加
PUT /user_dao
3.指定类型
POST /user_dao/_mapping/user
{
"user":{
"properties":{
"age":{
"type":"integer"
},
"sex":{
"type":"integer"
},
"name":{
"type":"text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
},
"car":{
"type":"keyword"
}
}
}
}
4.获取类型,能看到之前定义的类型
5.注意: 使用match查询,如上面的car字段设置type值为“text”,支持模糊查询。而keyword类型不能分词,用得比较少。Text类型可以分词查询(模糊查询,建议使用)。
相关文章
- 文档完整的超棒 iOS 开发框架 - NimbusKit
- Office文档如何转换 PDF 转 DOC XLS
- Elasticsearch 7.x 之文档、索引和 REST API 【基础入门篇】
- css+div布局要素:文档流position属性 父级对象和同级对象
- ceph-ansible5.0部署文档
- Atitit 搜索的艺术 目录 1. 索引基础2 1.1. 单词-文档矩阵2 1.2. 倒排索引基本概念3 2. 建立索引4 2.1. 两遍文档遍历法(2-Pass In-Memory In
- Atitit 项目的主体设计与结构文档 v5
- Elasticsearch安装(四), elasticsearch head 插件安装和使用。
- Elasticsearch教程(五) elasticsearch Mapping的创建
- Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
- SAP Fiori SSL 和 SAML 2.0 配置文档
- Angular form 官网文档的学习笔记:Angular两种实现form的方式
- Android问题笔记 - 关于腾讯文档TBS离线的研究
- Python编程:elasticsearch库操作Elasticsearch
- elasticsearch 官方监控文档 老版但很有用
- java dump 内存分析 elasticsearch Bulk异常引发的Elasticsearch内存泄漏
- 钉钉对话框文子转换成图片 不能复制粘贴到文档上
- (七)unity4.6Ugui中国教程文档-------摘要-UGUI Auto Layout
- 8年测开经验,为何惨遭领导痛批:你写的测试文档还不如刚来的应届生!
- 官方文档 Upgrading Elasticsearch
- elasticsearch function_score Query——文档排序结果的最后一道墙