当前位置: 首页 > news >正文

【Elasticsearch入门到落地】9、hotel数据结构分析

接上篇《8、RestClient操作索引库-基础介绍及导入demo》
上一篇我们介绍了RestClient的基础,并导入了使用Java语言编写的RestClient程序Demo以及将要分析的数据库。本篇我们就要分析导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。

一、分析前需要考虑的问题

我们如果想要建立索引库,必须要考虑以下问题:

问题一:索引库中的字段名、数据类型;
问题二:哪些字段参与搜索、哪些字段进行分词?
问题三:如果分词,分词器是什么?

带着这些疑问,我们来分析tb_hotel表结构:

大致看一下上面这个表结构,可以初步回答三个问题:
先说问题一,上面这个表里面的字段名和字段类型,其实就是我们将要建立索引库的字段名和类型,当然不一定是所有的字段,这个可以根据需要,参与搜索的建议全部加入。
再说问题二,哪些字段参与搜索?哪些字段进行分词?这俩问题其实跟业务场景息息相关,现在的场景确定是一个酒店业务,那么“酒店名称”这个字段一定是要参与搜索的,且因为酒店名称比较长,且可能带有一些关键词,所以这里肯定也需要进行分词。
然后是问题三,用什么分词器?这里我们先卖个关子最后再说。

二、分析数据库字段

我们下面逐个分析每个字段,如何对应创建我们的索引库。

1、酒店id(id)

这个是酒店数据的唯一标识主键,也可以作为我们索引库的唯一标识,所以这个字段是需要加入mapping索引库的,mysql中该字段为PROMARY KEY,是一个表的主键,不用分词,所以我们在索引库中就可以定义为keyword精确值类型。

"id":{"type":"keyword"}

因为是一个唯一标识,且是纯数字,这里我们不对它进行分词。

2、酒店名称(name)

这个上面咱们已经说过,是一个重点字段,它在mysql中是varchar类型,在mapping索引库中可以这是为text类型(因为需要分词),因为该字段是需要参与搜索的,所以要添加“analyzer”分词器属性,指定分词器为“ik_max_word”:

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

这里分词器为啥要选“ik_max_word”呢?这里我们解释一下,以下是常见的分词器表:

因为我们需要检索和分析的是中文名称或文档内容,最适合的分词器应该是“Chinese Analyzer”。而ik_max_word属于Chinese Analyzer(中文分词器)的一种分词模式。IK分词器是Elasticsearch中常用的中文分词插件,它提供了两种分词模式:ik_max_word和ik_smart。其中:

(1)ik_max_word:

●功能:将文本进行最细粒度的拆分,即将文本最大程度地切分成独立的词汇。
●特点:通过条件随机场(CRF)模型识别词汇边界,并使用动态规划寻找最优的词段划分,从而穷尽各种可能的词汇组合。
●应用场景:适用于需要更全面的分词结果,以便在索引时捕捉到更多的词汇信息,提高搜索的召回率。例如,在搜索引擎或信息检索系统中,可以使用ik_max_word模式来最大化地将文章内容分词,以便在搜索时能够匹配到更多的相关结果。

(2)ik_smart:

●功能:对文本进行智能分词,结合理解歧义和未知词的算法,对文本进行词典分词的同时,智能识别词汇的边界。
●特点:更注重分词的准确性和歧义处理,词典中的词汇边界会被优先考虑,从而可能减少不必要的扩展。
●应用场景:适用于需要更精确的分词结果,以便在搜索时能够更准确地匹配到用户查询的意图。例如,在搜索引擎中,可以使用ik_smart模式来更精确地搜索到用户想要的结果。
概括起来,ik_max_word是IK分词器中用于中文文本细粒度分词的一种模式,适用于需要提高搜索召回率的场景。
所以我们选择了“ik_max_word”分词器。

3、酒店地址(address)等其他字段

这里我们不再一一赘述,将其他字段逐个分析后,我列出了相关表格:

这里我们只介绍一个字段,就是location,回头我们查询酒店具体的坐标的时候,需要将经纬度合并计算出精确位置,此时我们使用的索引库类型就是geo_point类型。这个geo_point类型是Elasticsearch中用于表示地理位置坐标的特殊数据类型,它通过支持空间查询、地理位置分析、空间索引等功能,为基于地理位置的应用和服务提供了强大的支持。将经纬度组合成一个字段时,在索引库中使用geo_point类型可以充分利用这些功能,提高应用的性能和用户体验。

三、创建索引库语句

按照上面的分析,最终的mapping索引库的DSL建表语句如下:

# 酒店的mapping索引库
PUT /hotel
{"mappings": {"properties": {"id": { "type": "keyword" },"name": { "type": "text", "analyzer": "ik_max_word" },"address": { "type": "text", "analyzer": "ik_max_word" },"price": { "type": "integer" },"score": { "type": "integer" },"brand": { "type": "keyword" },"city": { "type": "keyword" },"star_name": { "type": "keyword" },"business": { "type": "text", "analyzer": "ik_max_word"},  "location": { "type": "geo_point" },"pic": { "type": "keyword", "index": false  } }}
}

我们打开Kibana界面,输入上述语句创建索引库并执行:

查询索引库,发现已经新增成功:

至此,我们对tb_hotel表结构的具体含义,以及做索引需要考虑的具体问题就讲解完毕了,并编写了DSL语句,并执行完毕。下一篇我们来进行java代码的编写,初始化RestClient并执行一些命令来操作索引库。

参考:《黑马Elasticsearch全套教程》

转载请注明出处:https://blog.csdn.net/acmman/article/details/146140551

相关文章:

【Elasticsearch入门到落地】9、hotel数据结构分析

接上篇《8、RestClient操作索引库-基础介绍及导入demo》 上一篇我们介绍了RestClient的基础,并导入了使用Java语言编写的RestClient程序Demo以及将要分析的数据库。本篇我们就要分析导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。 …...

【由技及道】量子构建交响曲:Jenkinsfile流水线的十一维编程艺术【人工智障AI2077的开发日志008】

摘要:当代码提交触发时空涟漪,当构建流水线穿越量子维度——欢迎来到自动化构建的终极形态。本文将揭示如何用Jenkinsfile编写量子构建乐章,让每次代码提交都成为跨维度交响乐的音符。 动机:构建系统的量子哲学 “主人啊&#xff…...

Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha:控制UI的透明度 类型:float,0.0 ~1.0, 其中 0.0 完全透明,1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…...

jenkins配置连接k8s集群

jenkins配置连接k8s集群 前言 我这边jenkins是在一个服务器里面,k8s集群在其他服务器,实现连接 首先jenkins下载有k8s插件 进入配置页面 获取k8s-api-server地址 对应k8s服务器执行 kubectl config view --minify -o jsonpath{.clusters[0].cluste…...

Linux 入门:常用命令速查手册

目录 一.指令 1.pwd(显示所在路径) 2.ls(列出所有子目录与文件) 3.touch(创建文件) 4.mkdir(创建目录) 5.cd(改变所处位置) 6.rm(删除&…...

【VUE】day01-vue基本使用、调试工具、指令与过滤器

【VUE】day01-vue基本使用、调试工具、指令与过滤器 1. 什么是Vue2. Vue的基本使用 1. 什么是Vue Vue(Vue.js)是一个用于构建用户界面的渐进式 JavaScript 框架,其核心设计理念是“自底向上逐层应用”,既能作为轻量级库增强现有项…...

deepseek为什么要开源

一、生态位的抢占与锁定:以 JDK 版本为例​ 在软件开发的世界里,生态位的抢占和先入为主的效应十分显著。就拿 Java 开发中的 JDK 版本来说,目前大多数开发者仍在广泛使用 JDK8。尽管 JDK17 和 JDK21 已经推出,且具备更多先进特性…...

软考 中级软件设计师 考点知识点笔记总结 day02

文章目录 3、计算机系统组成 (五大部件)3.1、主存储器3.2、运算器3.3、控制器3.4、Flynn分类法 4、指令系统4.1、七种寻址方式4.2、指令的流水处理4.3、流水线的计算 上一篇文章 软考知识点 day01 3、计算机系统组成 (五大部件) …...

Redis Cluster 客户端定位分片全解析:哈希槽与动态路由机制

Redis Cluster客户端定位分片全解析:哈希槽与动态路由机制 一、引言 Redis Cluster通过分片技术将数据分散存储在多个节点,实现水平扩展。客户端如何快速定位目标分片?本文将深入解析哈希槽算法、路由逻辑及实战技巧。 二、核心原理&#…...

基于Python+Vue的智能服装商城管理系统的设计与实现

👗 基于PythonVue的智能服装商城管理系统的设计与实现 电商级解决方案:全栈技术融合 智能推荐系统 多维度数据分析 项目亮点:课程设计优选 | 企业级架构规范 | 完整电商功能闭环 | 毕业设计选择 🌐 在线资源速览 类别地址访问方…...

提升Web可访问性的10个关键实践

在当今互联网时代,确保网站的可访问性(Accessibility)已经成为开发者和设计师的重要任务之一。Web可访问性不仅有助于残障用户更好地访问和使用网站,还能提升整体用户体验。本文将介绍10个关键的Web可访问性实践,帮助你…...

基于DeepSeek的智慧医药系统(源码+部署教程)

运行环境 智慧医药系统运行环境如下: 前端: HTMLCSS后端:Java AIGCDeepseekIDE工具:IDEA技术栈:Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…...

yolov5训练自己数据集的全流程+踩过的坑

一,拿到yolov5数据集的第一步是什么呢,安装必要的依赖文件。在requirements.txt文件下存放 pip install -r requirements.txt二,检查是否可以正常进行检测,在detect.py,文件下,里面有默认的设置文件是可以…...

【Recon】Git源代码泄露题目解题方法

CTF中Git源代码泄露题目解题方法 1. 确认存在.git目录泄露2. 下载完整的.git目录3. 恢复Git仓库历史4. 查找Flag的常见位置5. 处理不完整的.git目录6. 其他技巧示例流程 在CTF中遇到Git源代码泄露题目时,通常可以通过以下步骤解决: 1. 确认存在.git目录泄…...

Android APP 启动流程详解(含冷启动、热启动)

目录 一、流程对比图 二、冷启动(Cold Launch) 2.1 用户点击应用图标(Launcher 触发) 2.2 AMS 处理启动请求 2.3 请求 Zygote 创建新进程 2.4 初始化应用进程 2.5 创建 Application 对象 2.6 启动目标 Activity 2.7 执行 …...

Python实现网络通信:Socket模块与TCP/IP协议全解析

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方

信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方 题目描述 小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a a a 和 b b b,求 a b a^b ab …...

MongoDB学习笔记

MongoDB https://www.mongodb.com/download-center/community 打开客户端 mongo.exe 注意6.0版本不一样需要自行安装Mongoshell MongoDB Shell Download | MongoDB 创建数据库 use go_db; 创建集合 db.createCollection("student"); 添加MongoDB依赖 go get …...

C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹

C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks;namespa…...

时间复杂度空间复杂度

一、时间复杂度 时间复杂度(Time Complexity)表示算法运行时间随输入规模增长的变化趋势。通常用大 O 表示法(Big O Notation)来描述。 常见时间复杂度 复杂度名称例子O(1)常数时间复杂度访问数组中的某个元素。O(log n)对数时间复…...

【科研绘图系列】R语言绘制组合箱线图(grouped boxplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据画图输出图片系统信息介绍 【科研绘图系列】R语言绘制组合箱线图(grouped boxplot) 加载R包 library(tidyverse) library(lemon) library(ggnewscale)…...

【前缀和与差分 C/C++】洛谷 P8218 求区间和

2025 - 03 - 09 - 第 72 篇 Author: 郑龙浩 / 仟濹 【前缀和与差分 C/C】 文章目录 洛谷 P8218 求区间和题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示思路代码 洛谷 P8218 求区间和 题目描述 给定 n n n 个正整数组成的数列 a 1 , a 2 , ⋯ , a n a_…...

数据库二三事(14)

备份与恢复数据库 备份具体内容包括数据库结构,对象与数据,造成数据丢失的原因有: 存储介质故障(硬件损耗) 用户操作错误(人工) 服务器故障(软硬都可能) 病毒侵害 …...

C++之list

list是链表的意思&#xff0c;由一个个节点组成 一、基本接口使用&#xff1a; &#xff08;1&#xff09;与vector相同&#xff0c;有个尾插&#xff0c;也可以使用迭代器遍历&#xff1a; void test_list1() {list<int> lt;lt.push_back(1);lt.push_back(2);lt.push…...

数据增强术:如何利用大模型(LLMs)来模拟不同的扰动类型以增强信息提取任务的鲁棒性

一、对抗样本库构建 1. 基于LLMs的领域针对性扰动设计对抗样本生成 替换实体、三元组和触发器(Replace Entity, Triple, and Trigger) 使用LLMs(如GPT-4)来替换句子中的实体、关系三元组或事件触发器,同时保持其类型不变,并确保其他内容不受影响: xxx名称(如“x方” →…...

《Gradio : AI awesome-demos》

《Gradio : AI awesome-demos》 This is a list of some wonderful demos & applications built with Gradio. Heres how to contribute yours! &#x1f58a;️ Natural language processing Demo name (link to demo)input type(s)output type(s)status badgeruDALL-ET…...

物联网中如何增加其可扩展性 协议 网络 设备 还包括软件层面上的

物联网(IoT)系统的可扩展性是指系统能够随着设备数量、数据流量和业务需求的增长而灵活扩展的能力。为了增加物联网的可扩展性,需要从协议、网络、设备和软件等多个层面进行优化和设计。以下是一些具体的策略和方法: 1. 协议层面的可扩展性 1.1 采用轻量级协议 轻量级协议…...

【每日学点HarmonyOS Next知识】对话框去掉圆角、数组拼接、自定义对话框依附某个控件、平移动画、页面栈管理

1、 HarmonyOS CustomDialog怎么去掉左右和底部的透明以及圆角&#xff1f; CustomDialog怎么去掉左右和底部的透明以及圆角 设置customStyle为true即可开启使用自定义样式。设置borderRadius为0去掉圆角属性。 属性用法参考文档&#xff1a;https://developer.huawei.com/c…...

Unity 通用UI界面逻辑总结

概述 在游戏开发中&#xff0c;常常会遇到一些通用的界面逻辑&#xff0c;它不论在什么类型的游戏中都会出现。为了避免重复造轮子&#xff0c;本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块&#xff0c;也可以在次基础上进行扩展修改&…...

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。请…...

计算机网络——交换机

一、什么是交换机&#xff1f; 交换机&#xff08;Switch&#xff09;是局域网&#xff08;LAN&#xff09;中的核心设备&#xff0c;负责在 数据链路层&#xff08;OSI第二层&#xff09;高效转发数据帧。它像一位“智能交通警察”&#xff0c;根据设备的 MAC地址 精准引导数…...

机器学习:愚者未完成的诗篇(零)

当算法在数据海洋中打捞支离破碎的韵律时&#xff0c;机器学习系统展现出的智慧如同断臂的维纳斯雕像——完美与残缺构成令人战栗的美学悖论。愚者&#xff0c;在词语的混沌中编织逻辑经纬&#xff0c;却总在即将触及诗性本质的瞬间&#xff0c;暴露出认知维度的致命裂隙。 一…...

解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统

目录 1. 前言 2.大模型微调概念简述 2.1. 按学习范式分类 2.2. 按参数更新范围分类 2.3. 大模型微调框架简介 3. DeepSpeek R1大模型微调实战 3.1.LLaMA-Factory基础环境安装 3.1大模型下载 3.2. 大模型训练 3.3. 大模型部署 3.4. 微调大模型融合基于SpirngBootVue2…...

性能测试和Jmeter

文章目录 前言性能测试理论知识什么是性能&#xff1f;什么是性能测试&#xff1f;性能测试的作用性能测试与功能测试的区别性能测试常见术语性能测试的策略基准测试负载测试稳定性测试压力测试并发测试 常见性能测试指标响应时间并发数吞吐量点击数和错误率资源使用率 性能测试…...

Linux网络之数据链路层协议

目录 数据链路层 MAC地址与IP地址 数据帧 ARP协议 NAT技术 代理服务器 正向代理 反向代理 上期我们学习了网络层中的相关协议&#xff0c;为IP协议。IP协议通过报头中的目的IP地址告知了数据最终要传送的目的主机的IP地址&#xff0c;从而指引了数据在网络中的一步…...

数据结构第八节:红黑树(初阶)

【本节要点】 红黑树概念红黑树性质红黑树结点定义红黑树结构红黑树插入操作的分析 一、红黑树的概念与性质 1.1 红黑树的概念 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red和 Black 。 通过对 任何…...

【大模型知识点】位置编码——绝对位置编码,相对位置编码,旋转位置编码RoPE

由于Transformer 中的自注意模块具有置换不变性&#xff08;不关心输入序列的顺序&#xff09;&#xff0c;因此需要使用位置编码来注入位置信息以建模序列&#xff0c;使模型能够区分不同位置的 token&#xff0c;并捕捉序列的顺序关系。 在介绍一些位置编码方法前&#xff0…...

【大模型篇】推理模型大作战(QwQ-32B vs DeepSeek-R1)

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。 欢迎关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 写在前面 当我让QwQ-32B vs DeepSeek-R1 写一封未来自己的信 大家更喜欢哪种风格? QwQ-32B 模…...

【汇编语言】单片机程序执行过程

一、任务需求 指示灯LED4闪烁&#xff0c;亮0.5秒&#xff0c;灭0.5秒&#xff0c;无限循环 二、针对硬件的编程 1、确定原理图2、确定硬件的物理关系 三、设计步骤 1.用自己的语言描述工作流程 1.1指示灯LED4亮1.2延时0.5秒1.3指示灯LED4灭1.4延时0.5秒1.5跳转到1.1步 …...

MYSQL之创建数据库和表

创建数据库db_ck &#xff08;下面的创建是最好的创建方法&#xff0c;如果数据库存在也不会报错&#xff0c;并且指定使用utf8mb4&#xff09; show databases命令可以查看所有的数据库名&#xff0c;可以找到刚刚创建的db_ck数据库 使用该数据库时&#xff0c;发现里面没有…...

MybatisPlus

1.增删改查入门案例&#xff1a; 首先导入依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency> 然后这些增删改查…...

HCIE云计算学什么?怎么学?未来职业发展如何?

随着云计算成为IT行业发展的主流方向&#xff0c;HCIE云计算&#xff08;华为认证云计算专家&#xff09;作为华为认证体系中的高端认证之一&#xff0c;逐渐成为了许多网络工程师和IT从业者提升职业竞争力的重要途径。 那么&#xff0c;HCIE云计算究竟学什么内容&#xff0c;如…...

小程序 -- uni-app开发微信小程序环境搭建(HBuilder X+微信开发者工具)

目录 前言 一 软件部分 1. 微信开发者工具 2. HBuilder X 开发工具 二 配置部分 1. 关于 HBuilder X 配置 2. 关于 微信开发工具 配置 三 运行项目 1. 新建项目 2. 代码编写 3. 内置浏览器 编译 4. 配置小程序 AppID获取 注意 四 实现效果 前言 uni-app开发小程…...

多线程-线程本地变量ThreadLocal

简介 ThreadLocal是线程本地变量&#xff0c;用于存储独属于线程的变量&#xff0c;这些变量可以在同一个线程内跨方法、跨类传递。每一个ThreadLocal对象&#xff0c;只能为当前线程关联一个数据&#xff0c;如果要为当前线程关联多个数据&#xff0c;就需要使用多个ThreadLo…...

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05&#xff0c;由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE&#xff08;MuJoCo and Blender simulation Environment&#xff09;模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染&#xff0c;为机器人操作任务规划提供了逼真的视…...

计算机网络笔记(一)——1.1计算机网络在信息时代中的作用

21世纪的一些重要特征是数字化、网络化和信息化&#xff0c;它是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络&#xff0c;因为网络可以迅速地传递信息。网络现在已经成为信息社会的命脉和发展知识经济的重要基础。 有三大类网络大家应该很熟悉&#xff0c;即…...

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…...

计算机组成与体系结构-存储系统

主存编址 存储单元&#xff1a;最小存储单元&#xff0c;一般为4bit。每个存储单元有自己的二进制编号 存储器&#xff1a;多个存储单元排布而成。常见的有8*4存储器&#xff08;8个4bit的存储单元&#xff09; 编址内容&#xff1a; 按字编址&#xff1a;存储体的最小存储单…...

better-sqlite3之exec方法

在 better-sqlite3 中&#xff0c;.exec() 方法用于执行包含多个 SQL 语句的字符串。与预编译语句相比&#xff0c;这种方法性能较差且安全性较低&#xff0c;但有时它是必要的&#xff0c;特别是当你需要从外部文件&#xff08;如 SQL 脚本&#xff09;中执行多个 SQL 语句时。…...

WinUI 3 支持的三种窗口 及 受限的窗口透明

我的目标 希望能够熟悉 WinUI 3 窗口的基本使用方式&#xff0c;了解可能出现的问题 。 WinUI 3 支持三种窗口模式&#xff0c;分别为&#xff1a;常规窗口模式、画中画模式、全屏模式。 窗口模式&#xff1a;常规 即我们最常见的普通窗口。 支持&#xff1a;显示最大化按钮…...