5 创建映射

news2024/11/26 15:40:16

5 映射

上边章节安装了ik分词器,如果在索引和搜索时去使用ik分词器呢?如何指定其它类型的field,比如日期类型、数 值类型等。

本章节学习各种映射类型及映射维护方法。

5.1 映射维护方法

1、查询所有索引的映射:

GET: http://localhost:9200/_mapping

2、创建映射

post 请求:http://localhost:9200/xc_course/doc/_mapping

一个例子:

{ 
    "properties": { 
        "name": { 
            "type": "text" 
        },
        "description": { 
            "type": "text" 
        },
        "studymodel": { 
            "type": "keyword" 
        } 
    } 
}

3、更新映射

映射创建成功可以添加新字段,已有字段不允许更新。

4、删除映射

通过删除索引来删除映射。

5.2 常用映射类型

下图是ES6.2核心的字段类型如下:

image-20200130175154254

字符串包括text和keyword两种类型:

5.2.1 String字符串类型

5.2.1.1 text文本字段类型

type 为 text 时

1)analyzer

通过analyzer属性指定分词器。

下边指定name的字段类型为text,使用ik分词器的ik_max_word分词模式。

"name": { 
    "type": "text", 
    "analyzer":"ik_max_word" 
}

上边指定了analyzer是指在索引和搜索都使用ik_max_word,如果单独想定义搜索时使用的分词器则可以通过

search_analyzer属性。

对于ik分词器建议是索引时使用细颗粒分成器ik_max_word将搜索内容进行细粒度分词,搜索时使用粗颗粒分成器ik_smart提高搜索精确性。

因为搜索时用细粒度分词器ik_max_word的话,你输入的一句话就会分成很细的词去搜索,这显然不合理。比如你想搜索中华人民共和国人民大会堂相关的文章,输入 中华人民共和国人民大会堂时:就会分成 中华、华人、人民 去搜索,这时候就可能会匹配到很多文章,这显然没有提高搜索的精确度

"name": { 
    "type": "text", 
    "analyzer":"ik_max_word", 
    "search_analyzer":"ik_smart" 
}

2)index

通过index属性指定是否索引。

默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。

但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置

为false。

删除索引,重新创建映射,将pic的index设置为false,尝试根据pic去搜索,结果搜索不到数据

"pic": { 
    "type": "text", 
    "index":false 
}

3)store

是否在source之外存储,每个文档索引后会在 ES中保存一份原始文档,存放在"_source"中,一般情况下不需要设置 store为true,因为在_source中已经有一份原始文档了。

测试

删除xc_course/doc下的映射

创建新映射:Post http://localhost:9200/xc_course/doc/_mapping

{ 
    "properties": { 
        "name": {
            "type": "text", 
            "analyzer":"ik_max_word",
            "search_analyzer":"ik_smart" 
        }, 
        "description": { 
            "type": "text", 
            "analyzer":"ik_max_word", 
            "search_analyzer":"ik_smart" 
        },
        "pic":{ 
            "type":"text", 
            "index":false 
        },
        "studymodel":{ 
            "type":"text" 
        } 
    } 
}

插入文档:

http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000

{ 
    "name":"Bootstrap开发框架", 
    "description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包 含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的 精美界面效果。", 
    "pic":"group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg", 
    "studymodel":"201002" 
}

查询测试:

Get http://localhost:9200/xc_course/_search?q=name:开发

Get http://localhost:9200/xc_course/_search?q=description:开发

Get http://localhost:9200/xc_course/_search? q=pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg

Get http://localhost:9200/xc_course/_search?q=studymodel:201002

通过测试发现:name和description都支持全文检索,pic不可作为查询条件。

5.2.2.2 keyword关键字字段类型

上边介绍的text文本字段在映射时要设置分词器,keyword字段为关键字字段,通常搜索keyword是按照整体搜

索,所以创建keyword字段的索引时是不进行分词的,比如:邮政编码、手机号码、身份证等。keyword字段通常

用于过虑、排序、聚合等。

测试

更改映射:

{ 
    "properties": { 
        "studymodel":{ 
            "type":"keyword" 
        },
        "name":{ 
            "type":"keyword" 
        } 
    } 
}

插入文档:

{
    "name": "java编程基础", 
 	"description": "java语言是世界第一编程语言,在软件开发领域使用人数最多。", 
    "pic":"group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg", 
    "studymodel": "201001" 
}

根据studymodel查询文档

搜索:http://localhost:9200/xc_course/_search?q=name:java

name是keyword类型,所以查询方式是精确查询。

5.2.3 date日期类型

日期类型不用设置分词器。

通常日期类型的字段用于排序。

1)format

通过format设置日期格式

例子:

下边的设置允许date字段存储年月日时分秒、年月日及毫秒三种格式。

{ 
    "properties": { 
        "timestamp": { 
            "type": "date", 
            "format": "yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd" 
        } 
    } 
}

插入文档:

Post :http://localhost:9200/xc_course/doc/3

{
    "name": "spring开发基础", 
    "description": "spring 在java领域非常流行,java程序员都在用。", 
    "studymodel": "201001", 
    "pic":"group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg", 
    "timestamp":"2018‐07‐04 18:28:58" 
}

5.2.4 数值类型

下边是ES支持的数值类型

image-20200130175154254

1、尽量选择范围小的类型,提高搜索效率

2、对于浮点数尽量用比例因子,比如一个价格字段,单位为元,我们将比例因子设置为100这在ES中会按 分 存

储,映射如下:

"price": { 
    "type": "scaled_float", 
    "scaling_factor": 100 
},

由于比例因子为100,如果我们输入的价格是23.45则ES中会将23.45乘以100存储在ES中。

如果输入的价格是23.456,ES会将23.456乘以100再取一个接近原始值的数,得出2346。

使用比例因子的好处是整型比浮点型更易压缩,节省磁盘空间。

如果比例因子不适合,则从下表选择范围小的去用:

image-20200130175242540

更新已有映射,并插入文档:

http://localhost:9200/xc_course/doc/3

{
    "name": "spring开发基础", 
    "description": "spring 在java领域非常流行,java程序员都在用。", 
    "studymodel": "201001", 
    "pic":"group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg", 
    "timestamp":"2018‐07‐04 18:28:58", 
    "price":38.6 
}

5.2.5 综合例子

创建如下映射

post:http://localhost:9200/xc_course/doc/_mapping

{ 
    "properties": { 
        "description": { 
            "type": "text", 
            "analyzer": "ik_max_word", 
            "search_analyzer": "ik_smart" 
        },
        "name": { 
            "type": "text", 
            "analyzer": "ik_max_word", 
            "search_analyzer": "ik_smart" 
        },
        "pic":{ 
            "type":"text", 
            "index":false 
        }, 
        "price": { 
            "type": "float" 
        },
        "studymodel": { 
            "type": "keyword" 
        },
        "timestamp": { 
            "type": "date", 
            "format": "yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd||epoch_millis" 
        } 
    } 
}

插入文档:

Post: http://localhost:9200/xc_course/doc/1

{
    "name": "Bootstrap开发",
    "description": "Bootstrap是由Twitter 推出的一个前台页面开发框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精 美界面效果。",
    "studymodel": "201002", 
    "price":38.6, 
    "timestamp":"2018-04-25 19: 11: 35", 
	"pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MCAL_UART】-1.2-图文详解RS232,RS485和MODBUS的关系

目录 1 UART,RS232和RS485通信拓扑 2 什么是RS232 2.1 RS232标准的演变 2.2 RS232标准讲了哪些 2.2.1 RS232通信的电平 2.2.2 RS232通信的带宽 2.2.3 RS232通信距离 2.2.4 RS232通信的机械接口 3 什么是RS485 3.1 RS485标准的演变 3.2 RS485标准讲了哪些…

java运算符和表达式

文章目录 一、Java运算符和表达式二、Java算数运算符实例讲解三、Java关系运算符实例讲解四、Java逻辑运算符实例讲解五、Java位运算符实例讲解六、Java赋值运算符实例讲解七、Java条件运算符实例讲解八、Java instanceof运算符实例讲解九、Java运算符的优先级和结合性总结 一、…

steam/CSGO搬砖绝对是副业中的天花板

这个项目的主要逻辑就是——把Steam上CSGO的装备卖到国内上的平台,网易buff去交易赚一个汇率差。 这玩法有点像新疆出产的棉花占全国产量的85%,当地产量大,价格相对其他不产棉花的地区来说,自然就便宜了; 那么就会有商…

gazebo仿真

常用的仿真器 nvidia 场景非常真实,收费 物理仿真比较好,渲染差一点 为什么用仿真器,因为比较穷 gazebo与ros集成的比较好,有很多插件,机器人开发 刚体仿真器 ode 安装gazebo ros自带 机器人算法开发与验证 打开…

2023年湖北武汉安全员ABC报名条件和报名资料是什么?全国通用?

2023年湖北武汉安全员ABC报名条件和报名资料是什么?全国通用? 一、湖北安全员ABC报名条件要求: 1.安全员A证针对的是企业主要负责人,包括法定代表人、总经理(总裁)、分管安全生产的副总经理(副…

java版本spring cloud 企业电子招投标采购系统源码之首页设计

​ ​功能模块: 待办消息,招标公告,中标公告,信息发布 全程数字化的采购管理 智能化平台化电子化内外协同 明理满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的…

医疗血氧仪方案产品规格书

血氧仪是一种测量人体血氧饱和度的医疗设备,它通过指夹感应器将光源通过皮肤照射到血液中,测量出血液的血氧饱和度,从而帮助医生判断患者是否有缺氧的情况。下面是一份血氧仪产品规格书,具体内容如下: 产品名称&#x…

select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,…

gitlab cicd

CICD是指持续集成和部署,一般涵盖以下过程 常规步骤如下: 1、代码开发 2、代码提交(dev分支) 3、 持续集成自动检查和编译 包含:1、sonar初步检查,代码规范 2、自动编译,代码正确性检查 3、单元测试,goo…

2023年,网络安全方面 5 大值得学习的编程语言

Python 到目前为止,Python 在网络安全领域一直处于领先地位。这是一种通用的服务器端脚本语言(无需编译),已经被应用到成千上万的安全项目中。你会发现绝大多数安全工具和 PoCs 都是用 Python 编写的,这样做是有充分理…

Introduction to modern Cryptography 现代密码学原理与协议第三章笔记

在第二章中讨论的安全叫信息理论安全或完美安全,因为他们的安全性是基于敌手没有足够的信息来成功地完成攻击,而不管敌手地计算能力。 计算安全比信息理论安全要稍微弱一些,也是大多数现代密码学构造方法的目标。由于完美安全所需密钥的长度过…

前任临终前想要见你最后一面,你会去吗?(feat.安全出口fm 贴心闺蜜)

点击文末“阅读原文”即可参与节目互动 特别感谢 / 深夜谈谈播客网络、阿那亚 后期 / 老段 监制 / 姝琦 运营 / 卷圈,Sand 封面 / 姝琦MidJourney 产品统筹 / bobo 场地支持 / 空岛studio 节目主播:姝琦 / 馋虫 / 薇塔 / 老段 录制时间&#xff1a…

【SpringCloud01】

SpringCloud01 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求:2.3.2.注册RestTemplate2.…

C++——函数模板与类模板

0.关注博主有更多知识 C知识合集 目录 1.泛型编程 2.函数模板 2.1函数模板实例化 2.2函数模板参数的匹配原则 3.类模板 4.模板的分离编译 1.泛型编程 实际上泛型编程的难度是比较高的,但我们泛型编程的初学者,当然要从简单的地方开始入手。 我…

重磅!OpenAI最新研究:用GPT-4解释神经元行为,网友:AI套娃?

来源 | 机器之心 这就是 GPT 的「抽象」,和人类的抽象不太一样。 虽然 ChatGPT 似乎让人类正在接近重新创造智慧,但迄今为止,我们从来就没有完全理解智能是什么,不论自然的还是人工的。 认识智慧的原理显然很有必要,如…

K8S 部署 seata

文章目录 创建 Deployment 文件创建 ConfigMap 文件创建 Service 文件运行访问高可用部署踩坑 官方文档 k8s中volumeMounts.subPath的巧妙用法 创建 Deployment 文件 deploymemt.yaml namespace:指定命名空间image:使用 1.5.2 版本的镜像ports&#xf…

加密算法和非对称加密的简单学习

加密算法和非对称加密的简单学习 前言对称加密算法DES特点:为什么不使用: 3DES(Triple DES 或者 DESede)特点:使用场景:为什么不用: AES(Advanced Encryption Standard)特…

SoLVES模型的详细使用教程

SoLVES(Social Values for Ecosystem Services)模型是由美国地质调查局落基山地理科学中心(RMGSC)和科罗拉多州立大学联合研究开发,主要用于评估生态系统服务的社会价值,能够量化美学、生物多样性、休闲生活…

鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)

一、简介 LiteOS将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的。 LiteOS内存管理模块管理系统的内存资源,包括:初始化、分配、释放。 不采用C标准库中的内存管理函…

精准锁定证件材料篡改位置,合合信息智能图像处理技术助力金融机构防范违规开户

得知帮助他人办理几张银行卡、电话卡,就能坐等“分红”,许多人怀着“吃馅饼”的心态掉入了陷阱。今年4月,海南一男子出借银行卡帮助不法分子进行电信网络诈骗,涉案资金流水近10万元,被警方抓捕。此前,西安某…