实用篇-ES环境搭建

ES(elasticsearch) 是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能

elastic stack 是elasticsearch为核心的技术栈,包括beats、logstash(用作数据收集)、kibana(负责图形展示)、elasticsearch(负责数据搜索,存储等核心功能)

Lucene 是Apache的开源搜索引擎类库,也就是一个jar包,提供了搜索引擎的核心API,elasticsearch就是基于它来做的二次开发

常见的分布式搜索的技术,如下
1、Elasticsearch: 开源的分布式搜索引擎
2、Splunk: 商业项目,收费
3、Solr: Apache的开源搜索引擎

一、倒排索引

传统数据库(例如MySQL)采用正向索引,例如给下表(tb_goods)中的id创建索引
image.png

elasticsearch采用倒排索引,例如给下表(tb_goods)中的id创建索引
image.png

以下是倒排索引的搜索过程
image.png

总结
1、正向索引: 基于文档id来创建索引。查询词条时必须先找到文档,而后判断是否包含词条
2、倒排索引: 对文档内容进行分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条
去查询文档id,然后获取到文档
3. 正向索引是逐个遍历的方式去查询,效率低

二、elasticsearch对比mysql

elasticsearch
elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。注意elasticsearch的文档是以json形式存储的,也就是说,我们把数据(也叫文档)存储进elasticsearch时,这些文档数据就会自动被序列化为json格式,然后才存储进elasticsearch
elasticsearch的索引: 相同类型的文档的集合。索引和映射的概念,如下图

image.png

下面的表格是介绍elasticsearch中的各个概念以及含义,看的时候重点看第二、三列,第一列是为了让你更理解第二列的意思,所以在第一列拿MySQL的概念来做匹配。例如elasticsearch的Index表示索引也就是文档的集合,就相当于MySQL的Table(也就是表)

image.png

架构
MySQL:擅长事务擅长事务类型的操作,可以确保数据的安全和一致性。一般用于增删改
Elasticsearch: 擅长海量数据的搜索、分析、计算。一般用于查询
两者是互补的关系
image.png

总结
文档:一条数据就是一个文档,es中是json格式
字段:Json文档中的字段
索引:同类型文档的集合
映射:索引中文档的约束,比如字段名称、类型
elasticsearch与数据库的关系:

  • 数据库负责事务类型操作
  • elasticsearch负责海量数据的搜索、分析和计算

三、elasticsearch安装

elasticsearch、kibana、IK分词器,这三者通常是一起使用的
注意: 我们学习elasticsearch是基于docker容器来使用,需要你们提前准备好自己的docker容器以及掌握docker操作。elasticsearch一般都是搭配kibana(下节会学如何安装)来使用,kibana的作用是让我们非常方便的去编写elasticsearch中的DSL语句,从而去操作elasticsearch
首先安装es
第一步: 创建网络。因为我们还需要部署kibana容器,因此需要让es和kibana容器互联

systemctl start docker    # 启动docker服务
docker network create es-net #创建一个网络,名字是es-net

第二步: 加载es镜像。采用elasticsearch的7.12.1版本的镜像,这个镜像体积有800多MB,所以需要在Windows上下载链接安装包,下载下来是一个es的镜像tar包,然后传到CentOS7的/root目录

es.tar下载: https://cowtransfer.com/s/c84ac851b9ba44
kibana.tar下载: https://cowtransfer.com/s/a76d8339d7ba4d

第三步: 把在CentOS7的/root目录的es镜像,导入到docker

docker load -i es.tar
docker load -i kibana.tar

在这里插入图片描述
第四步: 创建并运行es容器,容器名称就叫es。在docker(也叫Docker大容器、Docker主机、宿主机),根据es镜像来创建es容器

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 es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解释:
● -e “cluster.name=es-docker-cluster”:设置集群名称
● -e “http.host=0.0.0.0”:监听的地址,可以外网访问
● -e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:内存大小,不能低于512
● -e “discovery.type=single-node”:运行模式,例如非集群模式
● -v es-data:/usr/share/elasticsearch/data:挂载数据卷,绑定es的数据目录
● -v es-logs:/usr/share/elasticsearch/logs:挂载数据卷,绑定es的日志目录
● -v es-plugins:/usr/share/elasticsearch/plugins:挂载数据卷,绑定es的插件目录
● --privileged:授予数据卷访问权
● --network es-net :加入一个名为es-net的网络中
● -p 9200:9200:端口映射配置,向外暴露的http请求端口,用于用户访问
● -p 9300:9300:端口映射配置,是es容器各个节点之间互相访问的端口,由于我们是单节点部署,所以用不到
● elasticsearch:7.12.1: 镜像名称,要把哪个镜像创建为容器,注意带版本号

浏览器访问http://192.168.229.129:9200
在这里插入图片描述

四、安装Kibana

第一步: 确保docker是启动的

systemctl start docker    # 启动docker服务

第二步: 加载kibana镜像。这个镜像体积有1.04G,所以需要在Windows上下载链接安装包,下载下来是一个es的镜像tar包,然后传到CentOS7的/root目录(已下载)
第三步: 把在CentOS7的/root目录的kibana镜像,导入到docker

docker load -i kibana.tar

第四步: 创建并运行kibana容器,容器名称就叫kibana。在docker(也叫Docker大容器、Docker主机、宿主机),根据kibana镜像来创建kibana容器

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

# --name: 指定容器的名字,例如kibana
# --network es-net: 加入一个名为es-net的网络中,与elasticsearch在同一个网络中
# -e ELASTICSEARCH_HOSTS: 由于kibana和es会被我们设置在同一个网络,所以这里的kibana可以通过容器名直接访问es,es的容器名我们在上一节设置的是es
# -e ELASTICSEARCH_HOSTS: 设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
# -p 5601:5601: 端口映射配置,向外暴露的http请求端口,用于用户访问

浏览器输入http://192.168.229.129:5601
在这里插入图片描述

五、安装IK分词器

IK分词器官网: https://github.com/medcl/elasticsearch-analysis-ik。注意elasticsearch、kibana、IK分词器,这三者通常是一起使用的
es在创建倒排索引时,需要对文档进行分词。在搜索时,需要对用户输入的内容进行分词。但默认的分词规则不支持中文处理,默认是只支持对英文进行分词,但是在正常业务中,我们需要处理的文档大多是中文,所以我们需要对中文进行分词,所以就需要安装IK分词器

第一步: 我们在 ‘4. 安装elasticsearch’ 创建elasticsearch容器时,指定了数据卷目录,其中有个数据卷指定了自定义名称为es-plugins,表示存放插件的数据卷
我们使用inspect命令把es-plugins数据卷的路径信息查询出来

docker volume inspect es-plugins

在这里插入图片描述
第二步: 下载ik.zip压缩包到Windows,下载后解压出来是ik文件夹
根据上面查询出来的es-plugins数据卷的路径,把ik文件夹上传到CentOS7的 /var/lib/docker/volumes/es-plugins/_data 目录

https://cowtransfer.com/s/54a5fa3838d746

在这里插入图片描述
第三步: 重启elasticsearch容器,我们在 ‘. 安装elasticsearch’ 创建elasticsearch容器时,指定了自定义容器名称为es

# 重启elasticsearch容器
docker restart es

第四步: 查看elasticsearch容器的启动日志

docker logs -f es

第五步: 确保elasticsearch、kibana已正常运行

docker restart es #启动elasticsearch容器
docker restart kibana #启动kibana容器

第五步: 测试。在浏览器中输入:http://192.168.229.129:5601 即可看到elasticsearch的响应结果

IK分词器包含两种模式:
● ik_smart:最少切分,根据语义分词,正常分词
● ik_max_word:最细切分,也是根据语义分词,分的词语更多,更细
在这里插入图片描述

六、词典扩展和应用

Ik分词器的分词,底层是一个字典,在字典里面会有各种各样的词语,当ik分词器需要对分词文本进行分词时,ik分词器就会拿着这个文本(乱拆成多个词或词语),一个个去字典里面匹配,如果能匹配到,证明某个词(乱拆成多个词或词语)是词,就把这个证明后的词分出来,作为一个词
第一个问题: 字典的分词效果是有限的,只能对日常生活中常见的语义相关的词,进行分词,由于字典的词汇量少,所以我们需要对字典进行扩展。
第二个问题: 字典的分词效果往往存在违禁词,我们不希望IK分词器能匹配并成功把词典里的违禁词作为分词,解决: 禁用某些敏感词条

1、要拓展或禁用ik分词器的词库,只需要修改一个分词器目录中的config目录中的IKAnalyzer.cfg.xml文件,如下

cd /var/lib/docker/volumes/es-plugins/_data/ik/config
<?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>
</properties>

2、在config目录新建myext.dic文件,写入自己想要的特定词,也就是扩展词。新建mystopword.dic文件,写入自己想要禁用的特定词,也就是不参与分词的词
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、重新启动elasticsearch、kibana

docker restart es #启动elasticsearch容器
docker restart kibana #启动kibana容器

4、测试。在浏览器中
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Actipro Software WinForms Controls 23.1.2

Actipro它被认为是一组 UI 控件&#xff0c;用于为用户和开发人员创建漂亮的窗口窗体以及桌面应用程序。Actipro Software 创建于 1999 年&#xff0c;被认为是为用户和开发人员&#xff08;主要为 Microsoft 平台 .NET&#xff09;提供软件组件的私营提供商。基于克利夫兰&…

速看!人物百度百科怎么创建?5分钟教会你创建人物百度百科词条

百度人物百科是一个广受欢迎的在线百科平台&#xff0c;它为用户提供了一个便捷的方式来了解各种各样的人物信息。如果你有一个人物的详细资料&#xff0c;你可以通过创建一个百度人物百科页面来分享这些信息。 下面是分媒互动分享的创建百度人物百科页面的步骤以及需要注意的几…

CAD图纸加密软件丨加密操作详解

在工程设计领域&#xff0c;CAD&#xff08;计算机辅助设计&#xff09;软件广泛应用于绘图、建模和设计等方面。然而&#xff0c;随着计算机网络的普及&#xff0c;CAD图纸的安全问题也日益受到关注。如何保护CAD图纸免受未经授权的访问、复制和篡改&#xff0c;成为设计师和企…

YOLOv8-Seg改进:卷积变体系列篇 | PConv,减少冗余计算和内存访问可以更有效地提取空间特征 | CVPR2023 FasterNet

🚀🚀🚀本文改进:PConv,减少冗余计算和内存访问可以更有效地提取空间特征,引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀PConv 亲测在多个数据集能够实现涨点,同样适用于小目标分割 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习…

建模分析 | 差速轮式移动机器人运动学建模(附Python/Matlab仿真)

目录 0 专栏介绍1 差速模型定义2 控制量与驱动量3 运动学方程4 仿真实现4.1 Python仿真4.2 Matlab仿真 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&#xff…

性价比高的台灯推荐,呼声最高的五款护眼台灯推荐

台灯可以说家家必备&#xff01;家中有上学的小孩更是需要一款好台灯&#xff0c;因为看书、写字、做作业都离不开台灯&#xff0c;一款好的台灯不仅会提供明亮的学习环境&#xff0c;而且还能保护视力&#xff0c;预防近视&#xff0c;因此&#xff0c;挑选台灯绝对不可以马虎…

HelloWorld -从Houdini导出HDA到UE5

1.配置插件 在Houdini安装目录下找到对应版本引擎的插件&#xff0c;例如这里是Houdini19对应UE5.2的版本&#xff0c;我们就要保证先下载好UE5.2&#xff1a; 将Houdini插件粘贴到UE安装目录的Plugins文件夹下&#xff1a; 目前插件配置完成&#xff0c;打开UE会自动启用插…

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境OpenCV环境 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据集&#xff0c;采用OpenCV库的函数进行图像处理&#xff0c;并通过神经网络进行模型训练。最终实…

基于springboot实现小学家校一体“作业帮”系统项目【项目源码】

基于springboot实现小学家校一体“作业帮”系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具…

放假通知!2024年全国中小学寒假时间发布!

进入冬季&#xff0c; 学生们都迫不及待地 期盼着寒假的到来。 近日&#xff0c;全国多地已经明确了 2024年中小学寒假的起止时间。 一起来看看你所在的城市寒假放几天 北京 据“首都教育”微信公众号消息&#xff0c; 普通中小学、中等职业学校 义务教育阶段2024年寒…

用CHAT如何写视频剪辑思路?

问CHAT&#xff1a;我的行业是国学教育&#xff0c;我的工作是视频剪辑师&#xff0c;给我推荐几个剪辑思路 CHAT回复&#xff1a; 作为一个国学教育视频剪辑师&#xff0c;你的主要任务是通过剪辑创作引人入胜、富有教育性的视频。 以下是一些可能对你有帮助的剪辑思路&…

抖音直播招聘报白企业或者人力资源公司怎么做?

抖音招聘是一种新颖、高效的招聘方式&#xff0c;它可以为公司带来更大的曝光度和吸引力&#xff0c;帮助公司吸引更多优秀的人才。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖音的短视频流量红利&#xff0c;触达到每天超过8亿的活跃用户群体。通过抖音直…

推荐一款高速CAN FD收发器NCV7343D20R2G 车规级 高达5Mbps数据速率

NCV7343D20R2G CAN FD收发器是控制器局域网&#xff08;CAN&#xff09;协议控制器和物理总线之间的接口。收发器向总线提供差分传输能力&#xff0c;向CAN控制器提供差分接收能力。NCV7343D20R2G是CAN高速收发器系列的一个补充&#xff0c;补充了NCV7343D20R2G CAN独立收发器和…

Cesium:绘制点

作者&#xff1a;CSDN _乐多_ 本文记录了在Cesium中绘制点的函数。 文章目录 data() 里面设置点的样式 pointOption: {show: true,pixelSize: 10,heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,color: Cesium.Color.RED,outlineColor: Cesium.Color.YELLOW,outl…

微信怎么群发消息?答案在这,1分钟就能学会!

微信群发消息是一种方便快捷的消息发送方式&#xff0c;该功能允许用户一次性给多个好友发送相同的内容。一般来说&#xff0c;群发消息比较适用于发送节日祝福、通知、品牌推广等场景。微信怎么群发消息&#xff1f;本文将给大家详细介绍微信群发消息的操作方法&#xff0c;只…

智慧城市井盖选择,智能井盖传感器特点介绍

在不断发展的智慧城市技术领域&#xff0c;创新的过程一直是永无止境的。 顺应科学技术的发展潮流&#xff0c;一项惠民的举措正在悄然改变人们的生活。智能井盖传感器看似是不起眼的设备&#xff0c;但是它们就在我们脚下&#xff0c;正在悄无声息的完善城市基础设施和城市生命…

Python中的filter函数用法详解

目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 引言 Python中的filter函数是一种内置的高效过滤…

excel中的OFFSET函数

介绍 OFFSET函数是确定从基点出发移动后的引用区域。它有5个参数&#xff1a; 第1个参数是引用的参考基点区域第2个参数是移动的行数&#xff0c;正数代表向下移动的行数&#xff0c;负数代表向上移动的行数第3个参数是移动的列数&#xff0c;正数代表向右移动的列数&#xf…

电脑远程监控软件大揭秘

电脑远程监控软件是一种通过互联网远程控制另一台电脑的软件&#xff0c;通常需要安装在被监控的电脑上&#xff0c;并由控制者通过电脑或手机进行远程操作。 这种软件广泛应用于企业、学校、家庭等场景&#xff0c;可以帮助管理者监控员工或孩子的电脑使用情况&#xff0c;保护…

死锁的发生原因和怎么避免

&#xff08;本文摘录mic老师面试文档&#xff09; 普通人 临场发挥… 高手 (如图)&#xff0c;死锁&#xff0c;简单来说就是两个或者两个以上的线程在执行的过程中&#xff0c;争夺同一个共 享资源造成的相互等待的现象。 如果没有外部干预&#xff0c;线程会一直阻塞无…