背景:搜索引擎ElasticSearch8.X+SpringBoo3.X的用途如下
-
实时搜索功能:ElasticSearch是一个开源的实时分布式搜索和分析引擎,它能够实现高效的实时搜索功能。学习ElasticSearch可以帮助我们构建强大的搜索功能,提升用户体验和搜索效率,多数互联网公司里面用的技术,构建业务搜索/日志存储分析/可视化大屏
-
数据分析能力:ElasticSearch不仅仅可以用于搜索功能,还可以用于数据分析和数据可视化。学习ElasticSearch可以帮助我们深入了解数据分析的原理和方法,提升我们的数据分析能力。
-
分布式系统:ElasticSearch是一个分布式系统,可以在多个节点上分布数据和处理请求。学习ElasticSearch可以帮助我们了解分布式系统的设计和实现原理,提升我们的分布式系统开发能力。
-
Spring Boot和ElasticSearch的结合:Spring Boot是一个快速开发框架,可以帮助我们快速构建企业级应用程序。学习Spring Boot和ElasticSearch的结合可以帮助我们构建强大的搜索引擎应用程序,提升我们的开发效率。
-
有谁在用,进一线大厂(国内大厂多数都有用 ),国内:阿里、字节、腾讯 、微信、网易、虎牙、青云、新浪等;国外:谷歌、Facebook、亚马逊、苹果等;产品:维基百科、Github、StackOverFlow都是使用ElasticSearch存储数据
学完我们这个文章后的能力
-
ElasticStack8.X核心架构和应用场景,实战云服务器选购+Linux服务器源码安装
-
源码安装Kibana8.X+ES8.X常用命令操作,多案例实战Index和Document核心操作
-
ES8.X映射Mapping定义和IK中文分词配置Query DSL多案例 match/match_all/filter/
-
match高级用法多字段匹配和短语搜索案例,单词纠错Fuzzy模糊查询和搜索高亮语法实战
-
Agg指标metric聚合搜索sum/avg/max/Trem/Range/Date Histogram多案例实战
-
新版SpringBoot3.X+ElasticSearch8.X整合多案例实战
什么是Elastic Stack?
学习ElasticSearch之前,需要知道下什么是Elastic Stack?是一个开源的数据分析和可视化平台,由Elasticsearch、Logstash、Kibana和Beats组成。
很多同学听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中有新成员Beats的加入,所以就形成了Elastic Stack,ELK是旧的称呼,Elastic Stack是新的名字
ElasticSearch:一个分布式实时搜索和分析引擎,高性能和可伸缩性闻名,能够快速地存储、搜索和分析大量结构化和非结构化数据,基于java开发,它是Elastic Stack的核心组件,提供分布式数据存储和搜索能力。
Logstash:是一个用于数据收集、转换和传输的数据处理引擎,支持从各种来源(如文件、日志、数据库等)收集数据;基于java开发,并对数据进行结构化、过滤和转换,然后将数据发送到Elasticsearch等目标存储或分析系统。
Kibana:基于node.js开发,数据可视化和仪表盘工具,连接到Elasticsearch,通过简单易用的用户界面创建各种图表、图形和仪表盘;帮助用户快速探索和理解数据,并进行强大的数据分析和可视化
ElasticSearch8.X核心概念
在新版Elasticsearch中,文档document就是一行记录(json),而这些记录存在于索引库(index)中, 索引名称必须是小写,下面对比关系性数据库Mysql,好轻松理解相关概念
Mysql数据库 | Elastic Search |
---|---|
Database | 7.X版本前有Type,对比数据库中的表,新版取消了 |
Table | Index |
Row | Document |
Column | Field |
分片shards:数据量特大,没有足够大的硬盘空间来一次性存储,且一次性搜索那么多的数据,响应跟不上,2ES提供把数据进行分片存储,这样方便进行拓展和提高吞吐
副本replicas:分片的拷贝,当主分片不可用的时候,副本就充当主分片进行使用,索引分片的备份,shard和replica一般存储在不同的节点上,用来提高可靠性
元数据:Elasticsearch中以 “ _” 开头的属性都成为元数据,都有自己特定的意思
ES默认为一个索引创建1个主分片和1个副本,在创建索引的时候使用settings属性指定,每个分片必须有零到多个副本
注意:索引一旦创建成功,主分片primary shard数量不可以变(只能重建索引),副本数量可以改变
Linux服务器源码安装JDK17+ElasticSearch8.X实战(结尾有安装包)
第一步:上传JDK17+ElasticSearch8.X相关安装包
第二步:安装JDK17
vim /etc/profile
#增加下面内容
JAVA_HOME=/usr/local/software/elk_test/jdk17
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
环境变量立刻生效
source /etc/profile
第三步:安装ElasticSearc8.X和配置相关
#上传安装包和解压
tar -zxvf elasticsearch-8.4.1-linux-x86_64.tar.gz
#新建一个用户,安全考虑,elasticsearch默认不允许以root账号运行
创建用户:useradd es_user
设置密码:passwd es_user
#修改目录权限
# chmod是更改文件的权限
# chown是改改文件的属主与属组
# chgrp只是更改文件的属组。
chgrp -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chown -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chmod -R 777 /usr/local/software/elk_test/elasticsearch-8.4.1
# 修改文件和进程最大打开数,需要root用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用
在文件内容最后添加后面两行(切记*不能省略)
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
#修改虚拟内存空间,默认太小
在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf
vm.max_map_count=262144
#修改elasticsearch的JVM内存,机器内存不足,常规线上推荐16到24G内存
vim config/jvm.options
-Xms1g
-Xmx1g
# 修改 elasticsearch相关配置
vim config/elasticsearch.yml
cluster.n