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

【ElasticSearch系列-01】初识以及安装elasticSearch

elasticSearch入门和安装

  • 一,elasticSearch入门
    • 1,什么是elasticSearch
    • 2,elasticSearch的底层优点
      • 2.1,全文检索
      • 2.2,倒排索引
        • 2.2.1,正排索引
        • 2.2.2,倒排索引
        • 2.2.3,倒排索引解决的问题
        • 2.2.4,正排和倒排总结
  • 二,下载安装
    • 1,elasticsearch安装
    • 2,安装elasticsearch-head
    • 3,安装kibana

一,elasticSearch入门

官网地址如下:https://www.elastic.co/cn/

1,什么是elasticSearch

用官网的话说就是:Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,它能很方便的使大量数据具有搜索、分析和探索的能力

在这里插入图片描述

2,elasticSearch的底层优点

2.1,全文检索

如在对一个输入框输入东西进行搜索的时候,在使用关系型数据库存储时,那么就需要使用到模糊查询,其sql语句如下。如果是直接使用SQL的模糊查询对数据进行检索,那么下面这条sql语句,在数据量大的时候,会非常的慢,并且最重要的是,根据B+树的底层数据结构,下面这条SQL不走索引,因此在海量数据检索时,一般不会考虑使用这个SQL

select * from product where name like '%衣服%' 

针对上述的问题,就可以引入这个为什么使用elasticSearch了。其底层就是会通过一个程序扫描文本的每一个单词,针对单字或者单词建立索引,并保存该单词在文本中的位置、以及出现的次数。然后在用户查询时,就会通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体的文本位置,所以就可以将具体的内容读取出来了。这样速度就非常的高效,并且底层也使用到了索引,即倒排索引。

2.2,倒排索引

2.2.1,正排索引

首先先说一下什么是正排索引,就是底层不会提前建立好索引,而是在查找时,会去判断数据中是否存在这个关键字,如果存在,那么就会记录这个关键字的位置以及出现的次数,这样又有点类似于这个使用sql了。那就以mysql为例子作为这个正排索引,假设有海量数据中包含着以下的数据: java多线程和高并发,那么如果用户直接在搜索框输入java高并发 关键字进行一个模糊查询,那么mysql是肯定不能查询出这条数据的,并且使用like直接不能走索引,还有涉及到回表的问题等等,因此查询效率低,查询的数据不完整。

select * from data like '%java高并发%'

2.2.2,倒排索引

由于正排索引效率并不高,并且查询出来的数据并不完整,因此es底层就参考这个正排索引,设计出了这个倒排索引,主要由id,关键字和这个索引下表index组成。如下有一下数据,都是英文组成,因此关键字就是以一个空格为一个关键字,因此可以对这个倒排索引进行如下的总结:

在这里插入图片描述

1,就是会将这些数据进行一个关键字的分词,然后将每一个词建立一个index的下标索引;

2,建立索引之后,就会进行一个去重的操作,根据关键字进行去重,然后再合并,并且将index存放在一起;

3,然后会根据关键字进行一个排序,由于这使用的是英文,所以直接根据首字母进行排序

2.2.3,倒排索引解决的问题

再来分析一下上面的那个用户java高并发关键字的问题,根据倒排索引的原则,首先会对数据进行一个分词,具体怎么分词由分词器决定,具体怎么分词要看使用什么样的分词器。那么就会对这条 java多线程和高并发 数据进行一个分词,如下,这个是数据的分词

idwordindex
1java1
2多线程1
31
4高并发1

那么在查询时,也会对要查询的数据再做一个分词,如将 java高并发 拆分成java和高并发两个关键字,然后再去和关键字进行一个匹配,然后再获取到下标,即数据对应的位置,由于这里只有一行数据,那么对应的数据就在index所示位置,第一行,这样即让关键字走了索引,也将全部需要的数据检索出来。

2.2.4,正排和倒排总结

正排索引就是根据这个关键字去进行一个全文检索的定位,最后再获取到那一条数据的id,然后根据id获取到那一条数据。倒排就是先将关键词进行一个拆分,然后根据拆分的关键词进行一个数据的定位,定位之后再获取到数据的index索引值,这个值对应的就是数据的id,然后根据id去定位那一条数据。

最大的区别就是:正排是后获取id,然后根据id获取整条数据;倒排是先获取id,就是通过关键字单位获取到的index索引值,然后根据这个id获取到文档中的全部数据 ,简单理解就是正向索引是key找value,反向索引就是通过value找key,这个vaue就是对应的id,数据库中被称为id,es中被称为index。

二,下载安装

如果用原生的方式通过linux安装这些玩意,那么肯定是比较复杂的,因此我这边选择使用docker进行一个安装,本人使用的是腾讯云服务器,内存大小为2核4g的,基本是够用了。

1,elasticsearch安装

1,先设置max_map_count的值

sysctl -w vm.max_map_count=262144

2,这里选择7.x的版本,并且这里安装7.7.0的版本

docker pull elasticsearch:7.7.0

3,接下来运行这个容器,各个参数就先不说了,可以直接去查看官网或者百度。然后输入docker ps命令,也可以发现这个容器已经在运行了

docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7SHUl3W-1677565105149)(img/1675244046781.png)]

4,然后以交互式进入容器

docker exec -it elasticsearch /bin/bash

5,切换到这个config的目录下面

cd config

6,然后编辑里面的这个elasticsearch.yml文件。

vim elasticsearch.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5ukB9tp-1677565105150)(img/1673326215198.png)]

要是出现这个没有vim的情况,直接安装这个vim即可,或者也可以使用vi

yum install vim 
//或者上面的直接使用
vi elasticsearch.yml

7,编辑这个elasticsearch.yml的内容如下。编辑完成之后,exit退出

cluster.name: "docker-cluster"
network.host: 0.0.0.0
#设置跨域问题
http.cors.enabled: true 
http.cors.allow-origin: "*"
#设置端口号
http.port: 9200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UCZBnP1I-1677565105151)(img/1673326486352.png)]

8,这样es就安装成功了,接下来服务器里面测试一下这个容器是否安装成功

curl 0.0.0.0:9200

在这里插入图片描述

9,浏览器输入这个ip + 9200,就可以查看是否安装成功了。如果curl有显示东西而这个浏览器里面访问不了,那么查看一下是不是这个防火墙的问题,或者是服务器端口号没开。有了一下界面,说明es安装成功了。

服务器ip + 9200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z6NW3oKB-1677565105152)(img/1675244254503.png)]

2,安装elasticsearch-head

1,安装head头部

docker pull mobz/elasticsearch-head:5

2,查看全部的镜像,查看一下这个mobz/elasticsearch-head:5是否拉取成功

docker images

在这里插入图片描述

3,运行这个head,后面可以直接使用这个imageId运行,可以在docker images里面查看这个head的image Id,这个imageID就是上图种的哪个IMAGE ID

docker run -d --name="es-head" -p 9100:9100 imageId

4,服务器里面测试一下这个容器是否安装成功。正常来讲就是安装成功的

curl 0.0.0.0:9100

5,浏览器输入这个ip + 9100,就可以查看是否安装成功了。如果curl有显示东西而这个浏览器里面访问不了,那么查看一下是不是这个防火墙的问题,或者是服务器端口号没开

服务器ip + 9100

6,访问一下,测试一下这个head能否连接成功这个ElasticSearch,如果用的是服务器记得改成服务器的ip + 9200。不然里面默认是localhost:9200,是一直等不到结果的,这样这个head就安装成功了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaXXDnJN-1677565105153)(img/1674025641971.png)]

3,安装kibana

1,拉取kibana镜像,这个版本要和ElasticSearch的版本一致

docker pull kibana:7.7.0

2,创建一个文件夹

mkdir -p /data/elk7/kibana/config/
vi /data/elk7/kibana/config/kibana.yml

这个配置文件文件的内容如下

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://服务器ip:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

3,运行这个容器

docker run -d --name=kibana --restart=always -p 5601:5601 -v /data/elk7/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.0

4,最后查看一下kibana的日志,如果有日志出现,那么这个kibana就安装成功了

docker logs -f kibana

最后通过这个 ip + 5601在浏览器访问一下,就可以得到一下的界面,那么这个kibana就算安装好了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PINgATHq-1677565105154)(img/1675245053085.png)]

这样安装这一块,基本就没啥问题了。最后查看一下这个全部的镜像,可以发现这些全部都安装好了,看大小占用了2.6个G,还没有配分词器那些,所以如果服务器安装的话,最低选择2核4g的服务器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfc1rSyv-1677565105155)(img/1675245301353.png)]

相关文章:

【ElasticSearch系列-01】初识以及安装elasticSearch

elasticSearch入门和安装一,elasticSearch入门1,什么是elasticSearch2,elasticSearch的底层优点2.1,全文检索2.2,倒排索引2.2.1,正排索引2.2.2,倒排索引2.2.3,倒排索引解决的问题2.2…...

【Leedcode】栈和队列必备的面试题(第一期)

栈和队列必备的面试题(第一期) 文章目录栈和队列必备的面试题(第一期)一、题目二、思路(图解)三、存在的问题与隐患(报错提示)(1)s中只有右括号,无…...

Unity 渲染流程管线

渲染流程图可以把它理解为一个流程,就是我们告诉GPU一堆数据,最后得出来一副二维图像,而这些数据就包括了”视点、三维物体、光源、照明模型、纹理”等元素。参考如下图(来自视频)CPU应用阶段剔除视锥剔除由Unity依据Camera直接完成&#xff…...

c++之引用

目录 引用的概念 引用做函数参数 引用的本质 常引用 引用的概念 在c中新增加了引用的概念,引用可以看作一个已定义变量的别名。 引用的语法:Type &name var; int main() {int a 10;int &b a;printf("b%d\n", b);printf(&quo…...

Java-扑克牌的创建以及发放

Java-扑克牌的创建以及发放题目:创建一个扑克牌(不需要包含大小王),分别分发给3个人,一个人发5张牌,输出结果要求包含全套牌(52张牌),以及3个人各自的牌的花色以及数字。1.扑克牌的源代码2.扑克牌运行结果3.扑克牌代码…...

华为OD机试题,用 Java 解【开放日活动】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

yarn run serve报错Error: Cannot find module ‘@vue/cli-plugin-babel‘ 的解决办法

问题概述 关于这个问题,是在构建前端工程的时候遇到的,项目构建完成后,“yarn run serve”启动项目时,出现的问题:“ Error: Cannot find module ‘vue/cli-plugin-babel‘ ” 如下图: 具体信息如下&…...

【LeetCode】剑指 Offer(11)

目录 题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 29. 顺时针…...

【英语】托福单词 近义/形近 分类汇总(更新中......)

transition 转变 过渡; transmit 传送(信息、信号) 传播(疾病) 传达(思想) transaction 交易 transact 做业务 做交易 translucent 半透明的 transparent 透明的 vague 模糊的 含糊的 笼统的 op…...

面试了一个32岁的程序员,一个细节就看出来是培训班的····

首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…...

Qt软件开发: 编写MQTT客户端连接各大物联网平台(主题订阅、发布)

一、前言 最近几年物联网发展的比较迅速,国内各大厂商都推出物联网服务器,面向设备厂商、个人开发者、提供云端一体的设备智能化服务,利用现成的物联网服务器可以快速实现IoT设备智能化的需求。方便企业、个人接入设备,低成本完成物联网开发。 比如:阿里云、百度云、华为…...

PTA L1-059 敲笨钟(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改…...

【设计模式】9.桥接模式

概述 现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系: 我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。 试…...

五、线程池

文章目录什么是线程池JDK自带的构建线程池的方式newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduleThreadPoolnewWorkStealingPoolThreadPoolExecutor应用&源码剖析为什么要自定义线程池ThreadPoolExecutor应用ThreadPoolExecutor源码剖析ThreadPo…...

ROS从入门到精通2-6:Rviz可视化进阶(画坐标轴、直线、平面、圆柱等)

目录0 专栏介绍1 Rviz可视化2 环境配置3 使用方法4 测试用例0 专栏介绍 本专栏旨在通过对ROS的系统学习,掌握ROS底层基本分布式原理,并具有机器人建模和应用ROS进行实际项目的开发和调试的工程能力。 🚀详情:《ROS从入门到精通》…...

Linux命令之lz4命令

一、lz4命令简介 LZ4是一种压缩格式,特点是压缩/解压缩速度超快(压缩率不如gzip),如果你特别在意压缩速度,或者当前环境的CPU资源紧缺,可以考虑这种格式。lz4是一种非常快速的无损压缩算法,基于字节对齐LZ77系列压缩方…...

强强角逐,筑梦开源| 2022年度启智社区优秀项目及开发者评选结果正式揭晓

2月24日,第四届OpenI/O启智开发者大会在深圳隆重开幕。本届大会以“算网筑基、开源启智、AI赋能”为主题,邀请国内人工智能开源领域领军院士亲自参加,汇聚学术界、产业界的技术专家,围绕中国算力网资源基座、开源社区服务支撑环境…...

【使用两个队列实现栈】

文章目录前言使用两个队列实现栈1.队列接口函数引入2.栈的初始化3.向栈中插入元素4.出栈操作5.取出栈顶元素6.判断栈是否为空7.释放内存空间总结前言 本文章主要介绍栈和队列的相互转换。 使用两个队列实现栈 我们知道,栈的特点是后进先出,而队列的特点…...

毕业设计 基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信

基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STC89C52单片机核心系统电路设计2.2 dht11温湿度检测电路设计2.3 NRF24L01无线通信电路设计3、部分代码展示3.1 NRF24L01初始化3.2 NRF24L01的SPI写时序3.…...

PowerShell Install Rabbitmq

Rabbitmq 前言 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...