Elasticsearch(2)——映射关系

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 typeElasticsearchdata type
null不添加
true 或 falseboolean 类型
带小数的数字,如 1.1float 类型
整数,如 3long 类型
字符串如果配置了自动识别且通过了自动识别 会根据字符串的实际值去动态转换成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

{
	"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 索引下创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值