认识+安装ElasticSearch
1. 为什么要学习ElasticSearch?
一般的来说,项目中的搜索功能尤其是电商项目,商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的,存在很多问题。
1.1 数据库搜索所存在的问题
1.1.1 查询效率较低
由于数据库模糊查询不走索引,在数据量较大的时候,查询性能很差
1.1.2 功能单一
数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据
综上所述,在面临海量数据的搜索,或者有一些复杂搜索需求的时候,推荐使用专门的搜索引擎来实现搜索功能。
目前全球的搜索引擎技术排名如下:
2. 初识ElasticSearch
了解ElasticSearch之前,先了解一个搜索引擎类库,如下:
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发
官网地址: Apache Lucene - Welcome to Apache Lucene
Lucene的优势:
易扩展
高性能(基于倒排索引)Lucene的性能非常好,因为它在做数据处理的时候,采用了这种倒排索引的方式。目前主流的所有的这种java语言的搜索引擎,基本上都是基于Lucene来实现的
ElasticSearch是一款非常强大的开源搜索引擎,支持的功能非常多
Elasticsearch的官方网站:Elasticsearch:官方分布式搜索和分析引擎 | Elastic
目前最新的版本是:8.x.x
Elasticsearch是由elastic公司开发的一套搜索引擎技术,它是elastic技术栈中的一部分。完整的技术栈包括:
Elasticsearch:用于数据存储、计算和搜索
Logstash/Beats:用于数据收集
Kibana:用于数据可视化
整套技术栈被称为ELK,经常用来做日志收集、系统监控和状态分析等
整套技术栈的核心就是用来存储、搜索、计算的Elasticsearch
ElasticSearch具备下列优势:
支持分布式,可水平扩展
提供Restful接口,可被任何语言调用
3. 安装 ElasticSearch+Kibana
3.1 通过下面的Docker命令即可安装单机版本的ElasticSearch:
由于拉取镜像比较复杂,所以将准备好的es.tar(ElasticSearch镜像包)和kibana.tar包(Kibana镜像包)一起上传到虚拟机的/root目录下
先将es.tar镜像包和kibana.tar镜像包解压,之后查看镜像
解压命令:
docker load -i es.tar
docker load -i kibana.tar
查看镜像命令:
docker images
3.1.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
运行完后可以看机创建一个名为es的容器,端口为9200
测试:
运行 192.168.218.15:9200 (注:这里是自己的虚拟机IP地址加端口9200)可以看到数据,代表部署成功!
3.1.2 安装Kibana
执行下面命令:
命令如下:
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601 \
kibana:7.12.1
测试
运行 192.168.218.15:5601 (注:这里是自己的虚拟机IP地址加端口5601) 可以看到一个控制台页面
选择Explore on my own
之后,进入主页面:则代表部署成功!
然后选中Dev tools
,进入开发工具页面
进去后可以进行一个查询测试
成功了,说明我们ElasticSearch和Kibana部署成功!