5-实战hotel表创建es映射
对酒店业务创建es映射
创建索引库,最关键的是mapping映射,而mapping映射要考虑的信息包括:
-
字段名
-
字段数据类型
-
是否参与搜索
-
是否需要分词
-
如果分词,分词器是什么?
其中:
-
字段名、字段数据类型,可以参考数据表结构的名称和类型
-
是否参与搜索要分析业务来判断,例如图片地址,就无需参与搜索
-
是否分词呢要看内容,内容如果是一个整体就无需分词,反之则要分词
数据库表结构如下

CREATE TABLE `tb_hotel` ( `id` bigint(20) NOT NULL COMMENT '酒店id', `name` varchar(255) NOT NULL COMMENT '酒店名称', `address` varchar(255) NOT NULL COMMENT '酒店地址', `price` int(10) NOT NULL COMMENT '酒店价格', `score` int(2) NOT NULL COMMENT '酒店评分', `brand` varchar(32) NOT NULL COMMENT '酒店品牌', `city` varchar(32) NOT NULL COMMENT '所在城市', `star_name` varchar(16) DEFAULT NULL COMMENT '酒店星级,1星到5星,1钻到5钻', `business` varchar(255) DEFAULT NULL COMMENT '商圈', `latitude` varchar(32) NOT NULL COMMENT '纬度', `longitude` varchar(32) NOT NULL COMMENT '经度', `pic` varchar(255) DEFAULT NULL COMMENT '酒店图片', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT
酒店数据的索引库结构:

#酒店 mapping POST /hotle { "mappings": { "properties": { "id": { "type": "keyword" }, "name":{ "type": "text", "analyzer": "ik_max_word", "copy_to": "all" }, "address":{ "type": "keyword", "index": false }, "price":{ "type": "integer" }, "score":{ "type": "integer" }, "brand":{ "type": "keyword", "copy_to": "all" }, "city":{ "type": "keyword", "copy_to": "all" }, "starName":{ "type": "keyword" }, "business":{ "type": "keyword" }, "location":{ "type": "geo_point" }, "pic":{ "type": "keyword", "index": false }, "all":{ "type": "text", "analyzer": "ik_max_word" } } } }
特殊字段说明
(1) id不能定义成long类型,在es中是一个字符串,因为它是一个整体不可分割,所以不参与分词,用keyword。
(2) location:地理坐标,里面包含精度、纬度
(3) all:一个组合字段,其目的是将多字段的值 利用copy_to合并,提供给用户搜索。
copy_to说明:我们的酒店名称name和酒店品牌brand和商圈bussiness字段,将来都要参与搜索,也就是查询条件不是一个值,而是多个值,根据一个字段搜索的效率肯定比多个字段搜索的效率高,es提供了一个copy_to的功能来解决这种问题(我们需要根据多个字段搜,又想效率比较高),例子中一个字段all同时拥有了name、brand、bussiness等字段的值。实现了在一个字段里搜到多个字段的内容。而且这种拷贝做了优化,并不是真的把文档拷贝进去,而只是基于它创建倒排索引,所以将来你查的时候看不到这个字段,好像不存在一样,但是搜却能根据它搜。
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)