elasticSearch快速了解

news2024/9/20 1:20:49

elasticSearch:经常用于搜索引擎,我们用的百度搜索和github上的搜索都是用的搜索引擎,它是对输入内容进行分析,然后查询,不像数据库模糊搜索的like一样必须含用你输入的全部内容。

elasticSearch优势:支持分布式,可水平扩展;提供了restful接口,可被任何语言调用。

elasticsearch结合kibana、Logstash、Beats,是一套完整的技术栈,被称为ELK,被广泛应用于日志数据分析、实时监控等领域。我们经常用kibana提供的可视化控制台来操作elasticsearch。

elasticsearch搜索数据采用的倒排索引。我先说一下什么是正排索引。

正排索引就是:以Mysql为例,就是我们用索引根据id去查找数据。但elasticsearch是根据标题进行模糊查询。无法建立索引。如果正排索引就需要去访问每一个数据。

倒排索引:其中有俩个概念。 文档:对应的mysql表中的每一行的数据。  词条:对应一行数据的内容按词义分成的若干个词(比如:文档是:“小米手机”,那词条就是:小米、手机)。

elasticSearch进行倒排索引时会把原数据库中的信息存储一份到elasticsearch中,并根据id建立索引与mysql数据库中一样(但数据结构上不一样)。然后去分词,把分好的词与对应的文档id存储起来。

 然后在对词条建立唯一索引。

所以elasticsearch的工作流程是:先对搜索内容进行分词,然后根据分词去查文档id,最后就是根据文档id正常查mysql等的数据库了。

那我们应该怎么对搜索内容进行分词呢? 我们经常用ik分词器,把搜索内容分成多个词条

ik分词器有俩种模式:1、 ik_smart 智能切分,粗粒度 ;2、 ik_max_word 最细切分,细粒度(对一个词进行多种不同的切分,比如: 程序员 切分为:程序员、程序、员;)

下面让我们来通过kibana控制操作一下elasticsearch:

我是用的docker部署的,elasticsearch 8x以后的版本的api接口变化很大,目前还是用7x版本的多,所以我部署的7.12.1版本的。同样我们还需要部署kibana,kibana的版本要与elasticsearch的版本对应,同样也要用7.12.1版本。

elasticsearch容器启动命令:

docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v 你的挂载目录/es-data:/usr/share/elasticsearch/data -v 你的挂载目录/es-plugins:/usr/share/elasticsearch/plugins --privileged --network hm-net -p 9200:9200 -p 9300:9300 elasticsearch:7.12.1

挂载目录,只要你觉得你能的方便找到,写哪都可以。

kibana容器启动命令:

docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=hm-net -p 5601:5601 kibana:7.12.1

注意:要把这俩个容器部署在同一个网桥下,我创建的network的名字是 hm-net 。

等都启动好后访问:https://localhost:5601    就可以进行kibana的控制台了。

登陆进去,然后点右上的 dev tools 就进入操作elasticsearch的控制台了

 我们想对搜索内容进行分词的话,需要用到ik分词器,但这个分词器插件需要自己去下载。下载好直接拖进我们挂载的elasticsearch的plugins目录中就可以了。

 解压后,ik分词器的文件名叫 elasticsearch-analysis-ik-7.12.1 ,直接把它拖进es-plugins目录,然后容器elasticsearch容器就行。

POST _analyze
{
  "analyzer": "ik_smart",
  "text": ""  
}

analyzer 是ik分词器的模式 模式有 ik_smart   和 ik_max_word 俩种;text 就是要分词的内容

post这行右边的三角符号,就会发送请求的命令。

 随着社会网络的发展,网络上经常新出现很大新的网络用词,这些新的网络用词ik分词器就不能识别的。就比如 “传智播客,泰酷辣啊”,分词器只会把它一个字一个字的分开。

但是! ik分词器提供给我们了扩展词汇的功能:我们只需要把新词汇加进去,分词器就能识别了。

让我们进入刚刚下载的ik分词器插件的目录中:

 以文本编辑的形式打开图中我选中的文件,你可以根据我的填上:

其中  stopword.dir是目录中自带的,你可以直接写在这,你也可以在该目录中的stopword.dir文件中添加你想停止扩展的文字。比如“啊,呀,哦,喔等等”。

而扩展字典 ext.dir是我们自己创建的文件。在这个新创的文件中写上你要添加的文字:

 然后保存退出就可以了。回到我们的kibana控制台,对“传智播客,泰酷辣啊” 进行分词,分词器就会把它们按一个词对待了。

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

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

相关文章

内网安全:域内信息探测

1.域内基本信息收集 2.NET命令详解 3.内网主要使用的域收集方法 4.查找域控制器的方法 5.查询域内用户的基本信息 6.定位域管 7.powershell命令和定位敏感信息 1.域内基本信息收集: 四种情况: 1.本地用户:user 2.本地管理员用户&#x…

智慧营区人员考勤管理系统|DW-S406系统实现无感考勤

智慧营区人员管理系统(DW-S406系统)通过建设人员基本信息管理功能,实现人力资源可视化、规范化管理,使人力资源管理工作决策的高效化、制度化得到有力保障,真正达到集中管理、集权管理的目标。主要实现营区人员管理、访…

逻辑回归(纯理论)

1.什么是逻辑回归? 逻辑回归是一种常用的统计学习方法,主要用于解决分类问题。尽管名字中包含"回归",但它实际上是一种分类算法 2.为什么机器学习需要使用逻辑回归 1.二元分类 这是逻辑回归最基本和常见的用途。它可以预测某个事…

数学建模·熵权法

熵权法 一种计算评价指标之间权重的方法。熵权法是一种客观的方法,没有主观性,比较可靠。具体定义 熵权法的核心在于计算信息熵,信息熵反映了一个信息的紊乱程度,体现了信息的可靠性具体步骤 Step1正向化处理 将所以评价指标转…

财务RPA的ROI——如何计算财务RPA的回报率

近几年各企业纷纷利用RPA加速推进数字化转型进程,从企业效益角度来看,RPA能够帮助企业节省人力和运营成本,实现提质增效,但是每个企业运营管理的实际情况多有不同,在实施RPA前,还是要仔细评估投资和效益的问…

元组列表之案例

1.列表推导式 基本语法: [表达式 for语句1 if 语句1 for语句2 if语句2 ........ ] 1.零到九的平方列表 a [i*i for i in range(10)] print(a) 2.for 循环前面加if else #如果是偶数乘以2,如果是奇数直接输出 a [i*2 if i%2 0 else i for i in ran…

Codeforces Round 954 (Div. 3)(A~D题)

A. X Axis 思路: 1~10暴力枚举一下所有可能 代码: #include<bits/stdc.h> using namespace std; #define N 1000005 typedef long long ll; typedef unsigned long long ull; ll n, m, t, h, k; ll a, b, c; ll ans, num, sum, cnt; ll temp[N], f1[N], f2[N]; bool f…

卤味江湖中,周黑鸭究竟该抓住什么赛点?

近年来&#xff0c;卤味江湖的决斗从未停止。 随着休闲卤味、佐餐卤味等细分赛道逐渐形成&#xff0c;“卤味三巨头”&#xff08;周黑鸭、绝味食品、煌上煌&#xff09;的牌桌上有了更多新对手&#xff0c;赛道变挤了&#xff0c;“周黑鸭们”也到了转型关键期。 这个夏天&a…

【eNSP模拟实验】三层交换机实现VLAN通信

实验需求 让PC1和PC2能够互相通讯&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 实验操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;点击右下角的应用 然后&#xff0c;在S2交换机&#xff08;S3700&#xff09;上做如下配置 #进入系统 <…

Springboot中使用@Async注解7大失效场景及解决方案

文章目录 前言一、配置类未启用异步支持二、线程池未正确配置三、Spring代理未生效四、方法不是 public 的五、调用者与被调用者在同一个类中六、异常处理不当七、使用 Transactional 与 Async 同时注解方法&#xff0c;导致事务失效总结 前言 在Spring Boot中&#xff0c;Asyn…

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码&#xff08;报错&#xff09; 写的过程中感到很迷惑的点&#xff1a;①二维数组和这道题目的对应弄不清除&#xff0c;m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…

LabVIEW电子水泵性能测试平台

开发了一种车用电子水泵性能测试平台&#xff0c;该平台以工控机为载体&#xff0c;利用LabVIEW开发上位机软件&#xff0c;采用PLC控制阀门和水泵等电气元件&#xff0c;通过RS485进行数据采集并传输到上位机。通过上位机与下位机的协同控制&#xff0c;实现了数据交互处理和性…

关于力反馈设备应用方向的探讨

力反馈是在虚拟现实 (VR)等模拟环境中通过机动运动或阻力模拟真实世界的物理触觉。大多数人都是通过视频游戏控制器&#xff08;如方向盘或踏板&#xff09;和其他设备&#xff08;如飞行模拟器操纵杆&#xff09;来了解力反馈效果。但我们都知道该技术的用途远不止于游戏。 触…

ENSP中OSPF配置

题目 划分网段&#xff0c;配置ip OSPF配置按照区域划分&#xff0c;这个网段也要按照区域个数划分&#xff0c;如这一题&#xff0c;分成两个区域&#xff0c;所以将192.168.1.0/24划分先为两个网段&#xff0c;然后在具体的划分区域中的网段。 以交换机为中心的三条线属于一…

探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议

随着科学技术的发展&#xff0c;促进人工智能产业与高校人才培养相融合&#xff0c;正成为业界关注的焦点。7月3日&#xff0c;上海合合信息科技股份有限公司&#xff08;以下简称&#xff1a;合合信息&#xff09;与同济大学软件学院“产教融合人才培养签约暨创新实践基地”揭…

模式物种葡萄基因组(T2T)--文献精读29

The complete reference genome for grapevine (Vitis vinifera L.) genetics and breeding 葡萄&#xff08;Vitis vinifera L.&#xff09;遗传学和育种的完整参考基因组 摘要 葡萄是全球最具经济重要性的作物之一。然而&#xff0c;以往版本的葡萄参考基因组通常由成千上万…

Qt/C++项目积累: 2.主机监控器 - 2.2 历史功能实现

修订历史&#xff1a; 20240711&#xff1a;初始表设计&#xff0c;采用sqlite 正文&#xff1a; 关于历史数据存储&#xff0c;考虑的是用数据库来完成&#xff0c;目前考虑使用Sqlite和mysql&#xff0c;先用sqlite来实现&#xff0c;设计表过程如下&#xff1a; 机器总览…

【栈和队列OJ题】

栈和队列OJ题 文章目录 栈和队列OJ题1. 用队列实现栈2. 用栈实现队列3. 括号匹配问题4. 循环队列 1. 用队列实现栈 OJ链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 好的&#xff0c;我们一起来看一下题目&#xff0c;题目是这样说的 思路&…

IDEA实现热部署

什么是热部署&#xff1f; 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止整个应用程序或重新启动服务器&#xff0c;就能够部署新的代码、资源或配置文件&#xff0c;使其立即生效。这种部署方式有助于提高开发效率和系统的可用性…

这些免费看电视的直播软件,还能免费追剧的app,需要的收藏!

想看中央台和地方卫视的电视直播app有什么呢&#xff1f;支持手机和智能电视的电视直播软件有哪些&#xff1f;今天要跟大家聊聊那些让人眼前一亮的电视直播软件&#xff0c;特别是2024年还能免费看电视直播的神器&#xff0c;让家里的老人也能享受到精彩的电视节目&#xff0c…