从MySQL到Elasticsearch:创建酒店索引案例

server/2024/11/15 6:58:58/

在现代的数据管理中,Elasticsearch(简称ES)因其强大的搜索功能和灵活的索引结构而受到广泛欢迎。本篇博客将介绍如何根据MySQL数据库中的酒店表定义,创建一个相应的Elasticsearch索引。

MySQL与Elasticsearch的对比

在开始之前,我们需要了解MySQL和Elasticsearch在数据存储和查询方面的不同:

  • MySQL 是一种关系型数据库管理系统,使用表、行和列来组织数据。
  • Elasticsearch 是一个基于Lucene的搜索引擎,提供全文搜索功能,并且能够快速处理大量数据。

酒店表的定义

首先,我们有一个MySQL表 tb_hotel,其定义如下:

CREATE TABLE `tb_hotel` (`id` bigint(20) NOT NULL COMMENT '酒店id',`name` varchar(255) NOT NULL COMMENT '酒店名称;例:7天酒店',`address` varchar(255) NOT NULL COMMENT '酒店地址;例:航头路',`price` int(10) NOT NULL COMMENT '酒店价格;例:329',`score` int(2) NOT NULL COMMENT '酒店评分;例:45,就是4.5分',`brand` nvarchar(32) NOT NULL COMMENT '酒店品牌;例:如家',`city` varchar(32) NOT NULL COMMENT '所在城市;例:上海',`star_name` varchar(16) DEFAULT NULL COMMENT '酒店星级',`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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

创建Elasticsearch索引

根据MySQL表的定义,我们可以创建一个Elasticsearch索引,名为 hotel。以下是创建索引的JSON配置:

PUT /hotel
{"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"}}}
}

索引字段说明

  • id:使用 keyword 类型,适合精确匹配。
  • namebrand:使用 text 类型,并指定 ik_max_word 分词器,同时复制到 all 字段以支持全文搜索。
  • addresspic:使用 keyword 类型,但 address 不参与索引,pic 不参与索引。
  • pricescore:使用 integer 类型,适合数值比较。
  • city:使用 keyword 类型,并复制到 all 字段。
  • starNamebusiness:使用 keyword 类型,适合分类和标签。
  • location:使用 geo_point 类型,支持地理位置搜索。

结论

通过以上步骤,我们成功地根据MySQL的酒店表定义创建了一个Elasticsearch索引。这将允许我们利用Elasticsearch的强大搜索能力,快速检索和分析酒店数据。记住,索引的创建和维护是一个持续的过程,需要根据实际业务需求不断调整和优化。


http://www.ppmy.cn/server/100098.html

相关文章

Qt | QGraphicsView+QGraphicsScene+QGraphicsItem会跳舞的机器人

点击上方"蓝字"关注我们 01、GraphicsView GraphicsView 是 Qt 框架中的一个重要组件,用于显示和交互 2D 图形项(QGraphicsItem)。它提供了一个高级的、可缩放的视图,适用于需要复杂图形交互的应用程序,如图形编辑器、地图查看器等。 以下是一些关于 Graphics…

【Rust光年纪】数据库客户端大赏:Rust语言六款利器全面解析

探秘Rust数据库客户端:功能对比、使用场景剖析、快速上手指南 前言 在现代软件开发中,数据库操作是一个至关重要的领域。为了提高效率并简化开发人员的工作,许多编程语言都提供了各种数据库客户端和ORM工具。Rust语言作为一门快速、安全的系…

第六天:java设计模式、GUI编程与面向对象设计原则

第六天:设计模式、GUI编程与面向对象设计原则 1. 设计模式概述 设计模式的定义:回顾设计模式的定义,即解决特定设计问题的通用解决方案。常见设计模式:了解并掌握几种常见的设计模式,如单例模式、工厂模式、策略模式…

使用python在不改变原有excel的格式下,修改指定单元格格式

需求 有一个账单,需要生成一个副本,但是需要将交易员列隐藏,不能改变原有的格式 xlsx的文件容易实现,使用openpyxl实现 xls的文件使用xlrdxlutil实现 参考了https://segmentfault.com/q/1010000008270267 class GenCopyReport(o…

【智能控制】第九,十章 一阶和二阶系统神经网络控制,输出受限系统和输入受限系统的神经网络控制(北京航天航空大学)

目录 一阶系统神经网络控制 1. 系统描述 2. 滑模控制器设计(f(x)已知) 3. 自适应神经网络控制(f(x)未知) 4. 仿真结果 二阶系统神经网络控制 1. 系统描述 2. 神经网络控制器​编辑​编辑​编辑​编辑​编辑 3. 仿真结果 输出受限系统的神经网络控制 1. 问题描述 2.…

汽车EDI:德国大众 EDI 项目案例

德国大众(Volkswagen)是成立于1937年的大型汽车制造商,总部位于德国沃尔夫斯堡。大众集团拥有众多知名汽车品牌,如奥迪、保时捷、宾利、兰博基尼、布加迪等,业务遍及全球。作为一个全球性企业,大众集团依赖…

Spring Boot集成protobuf快速入门Demo

1.什么是protobuf? Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的数据交换格式,它被用于结构化数据的序列化、反序列化和传输。相比于 XML 和 JSON 等文本格式,Protobuf 具有更小的数据体积、更快…

前端工程化工具——plop的使用-生成模板页面

背景 软件列表 软件名称版本号备注vue3.2.13vue-cli5.0.8plop4.0.1 操作步骤 新建vue3工程 vue create test-plop按提示完成操作即可 modules安装工具选择&#xff1a;yarn或npm均可 安装plop模块 yarn add plop -g新建模板文件 page1/index.hbs <template><…