【SpringCloud】微服务技术栈入门5 - ElasticSearch

news2025/1/4 19:40:44

ElasticSearch


倒排索引

在这里插入图片描述

倒排索引建立:对文章标题进行分词,将每个词存入 term,这些词也对应一个 id 也就是文档

倒排索引检索:假设我们搜索华为手机

  1. 分词:“华为”“手机”
  2. 从数据库中找到对应的两个 key,及其文档 id
  3. 由于文档 id 分别是 2,3 以及 1,2;可见文档 id=2 重合度最高,最符合搜索条件,则搜索结果他会排在最前面
  4. 搜索结果存入结果集

环境配置

首先你需要下载下面三个东西(这边选择 7.8 版本是为了兼容低版本 JAVA,高版本的 ES 必须要高版本 JDK,十分不方便)

  1. ElasticSearch7.8.0
  2. kibana
  3. ik 分词器

注意!由于我们是在 windows 下搭建的环境,所以下载 ik 分词器时务必下载 elasticsearch-analysis-ik-7.8.0.zip 这个编译好的包,别下载源码包了!!!

三件套全部版本都必须一致!不存在什么向下或者向上兼容!


windows 下安装非常简单,把三个压缩包全部解压到一个非中文路径的目录下

先把 ik 分词器 压缩包的所有内容丢到 es7.8 根目录下的 plugins 文件夹

打开 es7.8 的 JVM 配置文件:es7.8/config/jvm.options
调节一下运行内存,否则一运行必定爆内存然后闪退

-Xms1g
-Xmx1g

大功告成,双击运行下面这两个 bat 文件即可(注意先后顺序)

  1. es根目录/bin/elasticsearch.bat
  2. kibana根目录/bin/kibana.bat

es 默认运行 9200 端口,kibana 默认运行 5601 端口


测试 ik 分词器

打开 kibana 控制台localhost:5601

点击左上角菜单,拉到最下面选择 dev tools
在这里可以随意测试我们的 es 代码,比如说插入索引和查询啥的

按照下图格式,我们使用 ik 智能分词器对一行包含汉语和英语的文字执行了分词操作

在这里插入图片描述

POST _analyze
{
  "text": "我再也不想学JAVA语言了",
  "analyzer": "ik_smart"
}

添加扩展词典

网络热词不可能总是被 ik 分词器所收录,更何况是中文,所以特殊情况下我们需要添加扩展字典来帮助 ik 分词器正确识别网络新词

首先打开 ik 分词器扩展设置文件:es根目录/plugins/analysis-ik/config/IKAnalyzer.cfg.xml
把他改成下面的样子

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">ext.dic</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic</entry>

	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

同目录下新建文件 ext.dic 用于存放扩展词,扩展词每写一个换一次行
我们可以添加以下两个扩展词

小黑子
煤油树枝
香精煎鱼
香菜凤仁鸡
梅素汁

重启 es7.8,然后再次回到我们的 kibana 界面

可见,ik 分词器成功的识别出了网络热词并执行分词操作!

在这里插入图片描述


操作索引

创建一个简单的索引只需要按照以下的代码进行简要修改即可

PUT /heima
{
  "mappings": {
    "properties": {
      "info":{                            // 设置字段名为"info"的映射
        "type": "text",                   // 设置字段类型为"text"
        "analyzer": "ik_smart"            // 使用中文分词器"ik_smart"进行分词
      },
      "email":{                           // 设置字段名为"email"的映射
        "type": "keyword",                 // 设置字段类型为"keyword",表示不会进行分词
        "index": false                     // 设置不对该字段进行索引,即无法通过该字段进行搜索
      },
      "name":{                            // 设置字段名为"name"的映射
        "type": "object",                  // 设置字段类型为"object",表示是一个嵌套对象
        "properties": {                    // 定义嵌套对象的属性
          "firstname":{                    // 设置嵌套对象的属性名为"firstname"的映射
            "type":"keyword"                // 设置属性类型为"keyword",表示不会进行分词
          },
          "lastname":{                     // 设置嵌套对象的属性名为"lastname"的映射
            "type":"keyword"                // 设置属性类型为"keyword",表示不会进行分词
          }
        }
      }
    }
  }
}

在 dev tools 中执行完毕后的结果是

{
	"acknowledged": true,
	"shards_acknowledged": true,
	"index": "heima"
}

索引与文档操作

es 中索引库和 mapping 一旦创建后就无法修改,但是可以向其中添加新的字段

如下指令,向索引 heima 添加了一个新的字段叫做 age

PUT /heima/_mapping
{
  "properties":{
    "age":{
      "type":"keyword"
    }
  }
}

获取索引库:GET /索引库名称
删除索引库:DELETE /索引库名称


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

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

相关文章

8年经验之谈 —— Web ui自动化测试框架总结!

实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时补充。 首先&#xff0c;自动化测试不是手动测试的替代品&#xff0c;是比较好的补充&#xff0c;而且不是占大比重的补充。 70%的测试工作集中在底层接口测试和单元测试&#xff0…

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

二、图像处理

待完善 一、图片缩放 import org.bytedeco.opencv.global.opencv_imgcodecs; import org.bytedeco.opencv.global.opencv_imgproc; import org.bytedeco.opencv.opencv_core.Mat; import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static voi…

LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment

现在&#xff0c;您已经了解了如何调整和对齐大型语言模型以适应您的任务&#xff0c;让我们讨论一下将模型集成到应用程序中需要考虑的事项。 在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快&#xff1f;您有多…

Linux深度学习:除基本命令操作外的实用操作

Linux深度学习&#xff1a;除基本命令操作外的实用操作 软件安装systemctl软连接日期、时区IP地址、主机名网络传输下载和网络请求端口 进程管理主机状态系统资源监控磁盘信息监控网络状态监控 环境变量上传、下载压缩、解压root用户、用户、用户组管理查看、修改权限控制 软件…

windows动态配置多个JDK遇到的问题

环境变量配置如下&#xff1a;问题&#xff1a;当切换JAVA_HOME 为%JAVA17_HOME%,查看java版本还是java 11。 我检查path配置发现这个路径 删除这个路径配置&#xff0c;再切换JAVA_HOME的配置&#xff0c; 查看版本号这时就可以了

使用Python抓取某音数据详细步骤

某音作为当今最受欢迎的短视频平台之一&#xff0c;吸引了亿万用户的眼球。但是&#xff0c;你是否曾经想过如何通过Python来抓取某音数据&#xff1f;本文将揭示这个秘密&#xff0c;并分享使用Python来抓取某音数据的实用技巧&#xff0c;帮助你深入了解背后的数据世界。 第一…

【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头

前言 最近在学go操作excel&#xff0c;毕竟在web开发里&#xff0c;操作excel是非常非常常见的。这里我选择用 excelize 库来实现操作excel。 为了方便和通用&#xff0c;我们需要把导入导出进行封装&#xff0c;这样以后就可以很方便的拿来用&#xff0c;或者进行扩展。 我参…

uni-app:服务器端数据绘制echarts图标(renderjs解决手机端无法显示问题)

效果 代码 <template><view click"echarts.onClick" :prop"option" :change:prop"echarts.updateEcharts" id"echarts" class"echarts"></view> </template><script>export default {data()…

MDK(Keil)的MAP文件都记录了啥

1.Section Cross References&#xff1a;译为各区域的交叉参考&#xff0c;记录了每个C文件调用了哪些其它文件的函数&#xff0c;内容很多所以这个部分相当长 2.Removing Unused input sections from the image&#xff1a;移除未使用的输入部分&#xff0c;记录哪些文件的哪些…

Quarto 入门教程 (2):如何使用并编译出不同文档

接着上一期内容&#xff1a;手把手教你使用 Quarto 构建文档 (1)&#xff0c;本文介绍如何使用 Quarto&#xff0c;并编译出文档&#xff08;PDF&#xff0c;MS Word&#xff0c;html&#xff09;等。 安装 根据官方链接&#xff0c;选择适合自己电脑的 Quarto 版本并下载&am…

【开发篇】二十一、SpringBoot整合Kafka

文章目录 1、整合2、消息的生产3、消费4、补充&#xff1a;安装 Kafka主体不是用来做消息中间件的&#xff0c;但也有这个功能&#xff0c;接下来整合Kafka 1、整合 导入依赖坐标&#xff1a; <dependency> <groupId>org.springframework.kafka</groupId&g…

聚观早报 | 微软将推出首款AI芯片;Galaxy S24系列首发

【聚观365】10月8日消息 微软将推出首款AI芯片 Galaxy S24系列首发 特斯拉将发布第三季度财报 台积电9月份营收56亿美元 2023国庆档新片总票房破27亿 微软将推出首款AI芯片 据外媒援引知情人士消息透露&#xff0c;微软计划在下个月举行的年度开发者大会上推出该公司首款…

【PG】Linux系统部署PostgreSQL 单机数据库

安装方式 1 安装包方式 &#xff08;Packages and Installers&#xff09; 支持的操作系统包括 liunxMacosWindowsBSDSolaris 2 源码安装 &#xff08;Source code&#xff09; 下载源码包 通过下载地址PostgreSQL: File Browser 可以看到有各个版本的源码目录 选择13.1…

80、90童年回忆之小霸王游戏机网页版

前言 在如今快节奏的生活中&#xff0c;我们常常追逐着最新潮流&#xff0c;迷失了曾经的经典与回忆。现在&#xff0c;有一种游戏机能够带你回到小时候&#xff0c;让你重温那些令人难以忘怀的游戏时光&#xff0c;这就是小霸王游戏机&#xff01; 作为 80 年代和 90 年代最受…

对于复杂二进制数位dp问题考虑朴素思想:agc015d

https://atcoder.jp/contests/agc015/tasks/agc015_d 我一开始考虑的是直接上二进制数位dp&#xff0c;但发现这很难做 然后其实可以从最朴素的二进制分类讨论角度考虑 同样是那么几个套路&#xff0c;考虑最高位

AXI总线协议基础--几分钟熟悉通道信号和基础架构

目录 一、AXI协议基础 1.1读写通道的基本架构图 1.2猝发操作举例 1.3传输顺序 二、各个通道中的信号描述 2.1全局信号 2.2写地址通道信号 2.3写数据通道信号 2.4写响应通道信号 2.5读地址通道信号 2.6读数据通道 三、通道握手 3.1单一信息传输时的握手过程 3.2不…

NPM 常用命令(九)

目录 1、npm link 1.1 使用语法 1.2 描述 2、npm login 2.1 描述 3、npm logout 3.1 描述 4、npm ls 4.1 使用语法 4.2 描述 5、npm org 5.1 使用语法 5.2 示例&#xff1a; 6、npm outdated 6.1 使用语法 6.2 描述 6.3 示例 7、npm owner 7.1 使用语法 7.2…

使用Spring Initailizr功能~

Spring Initializr是一个用于快速生成Spring Boot项目的在线工具&#xff0c;它允许用户选择所需的Spring Boot版本、添加所需的依赖&#xff0c;并生成一个可用的项目结构&#xff0c;包括基本的配置文件和代码框架&#xff0c;它能够简化Spring Boot项目的初始化过程&#xf…

高通camx开源部分简介

camera整体框架 ISP Pipeline diagram Simple Model Camx and chi_cdk 整体框架 CtsVerifier, Camra Formats Topology of Camera Formats. Topology (USECASE: UsecaseVideo) Nodes List Links between nodes Pipeline PreviewVideo Buffer manager Create Destro…