1 什么是映射
映射(mapping)就像数据库中的 Schema ,描述了文档可能具有的字段或属性、每个字段的
数据类型,比如 Text,Keyword,Integer 或 Date ,以及 Lucene 是如何索引和存储这些字
段的。
Elasticsearch 支持如下简单字段类型:
(1) 字符串: text,keyword
(2)整数:byte,short,integer,long
(3)浮点数: float,double
(4) 布尔型: boolean
(5) 日期: date
当你索引一个包含新字段的文档之前【未自动配置映射关系时】,Elasticsearch通过JSON 中基本数据类型,尝试猜测字段类型,自动的加入到映射中。这是Elasticsearch中的动态索引,使用如下规则去映射文档字段。
JSON data type | Elasticsearchdata type |
---|---|
null | 不添加 |
true 或 false | boolean 类型 |
带小数的数字,如 1.1 | float 类型 |
整数,如 3 | long 类型 |
字符串 | 如果配置了自动识别且通过了自动识别 会根据字符串的实际值去动态转换成Elasticsearch的数据类型。如 ‘2023-10-12’ date类型 ‘1.45’ float类型 ‘120’ long 类型 未配置自动识别,使用text 或者keyword类型 |
对于 JSON 中的字符串字段,我们可以通过配置 date_detection: true 和 numeric_detection:
true 尝试将它们转化成数值类型或时间类型,date_detection 默认为 true,numeric_detecti
on 默认为 false
2 查询映射
准备3条数据
Post http://localhost:9200/users/_create/1
Post http://localhost:9200/users/_create/2
Post http://localhost:9200/users/_create/3
请求的JSON参数如下
{
"name":"张三",
"sex":"male",
"tel":85621
}
{
"name":"晓明",
"sex":"male",
"tel":17885150125
}
{
"name":"萧红",
"sex":"female",
"tel":89457
}
根据上述内容可知,Elasticsearch会在未定义索引的情形去检索JSON的数据类型自动去映射成为Elasticsearch中的数据类型。可以发送Get请求去查询映射关系
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
9200
/
u
s
e
r
s
/
m
a
p
p
i
n
g
\textcolor{red}{http://localhost:9200/users/_mapping}
http://localhost:9200/users/mapping _mapping 映射操作
3自定义映射关系
尽管在很多情况下基本字段数据类型已经够用,但你经常需要为单独字段自定义映射,特别是
字符串字段。自定义映射允许你执行下面的操作:
(1) 全文字符串字段和精确值字符串字段的区别
(2) 使用特定语言分析器
(3)优化字段以适应部分匹配
(4) 指定自定义数据格式
可以发送Put请求去自定义设置映射关系 h t t p : / / l o c a l h o s t : 9200 / u s e r 2 / m a p p i n g \textcolor{red}{http://localhost:9200/user2/_mapping} http://localhost:9200/user2/mapping文章来源:https://www.toymoban.com/news/detail-520641.html
{
"properties": {
//允许的字段 name
"name": {
// 类型为text,可分词查询
"type": "text",
//当前字段允许创建索引
"index": true
},
"sex": {
// 类型为keyword,不可分词查询
"type": "keyword",
"index": true
},
"tel": {
"type": "keyword",
//禁用索引 默认情况下,Elasticsearch 文档每个字段都会被索引。如果某些字段不需要支持查询,可以在映射中配置 "index": false ,减少存储空间占用,并且提升写入速度
"index": false
}
}
}
值得注意的是,已有字段映射已存在的时候,不允许进行修改,比如说从long类型修改成为keyword类型,只能添加新字段
所以自定义创建映射时,选在user2 索引下创建。文章来源地址https://www.toymoban.com/news/detail-520641.html
到了这里,关于Elasticsearch(2)——映射关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!