最新docker搭建elasticsearch7搜索系统+Springboot整合es

哪些企业在用ES

国内现在有大量的公司都在使用 Elasticsearch,包括京东、58、携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。

除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据和实时分析领域,包括日志分析、指标监控、信息安全等多个领域。
它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。

那什么是elasticsearch

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单。
ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。

搜索为什么不用mysql而用es

MySQL默认使用innodb引擎,底层采用b+树的方式来实现,而Es底层使用倒排索引的方式实现,使用倒排索引支持各种维度的分词,可以掌控不同粒度的搜索需求。(MYSQL8版本也支持了全文检索,使用倒排索引实现,有兴趣可以去看看两者的差别)。
如果使用MySQL的%key%的模糊匹配来与es的搜索进行比较,在8万数据量时他们的耗时已经达到40:1左右,毫无疑问在速度方面es完胜。

综上所述 在搜索领域非常火的elasticsearch,很多公司都在使用,所以如果说你还不知道es可能就会被人鄙视哦,下面就跟着我一起练习起来。

这里我使用docker容器进行安装部署
建议先关闭防火墙

systemctl stop firewalld

查看防火墙状态

systemctl status firewalld

在这里插入图片描述
然后重启docker

systemctl restart docker

Elasticsearch安装

docker安装es

我们这里安装的是最新的7.6.2版本

docker pull elasticsearch:7.6.2

在这里插入图片描述

启动es

这里需要注意一下,在启动的时候加上-e ES_JAVA_OPTS="-Xms=256m -Xms=256m" 参数,给es分配256m的内存大小。不然后面在es中安装其它应用如IK分词器可能会报错,如下图!
在这里插入图片描述

docker run  -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name es -p 9200:9200 -p 9300:9300 -e "cluster.name=elasticsearch" -e "discovery.type=single-node" -d elasticsearch:7.6.2

检查es是否安装完成

curl http://localhost:9200

或者在浏览器中打开
http://192.168.232.132:9200
这个网址,注意替换成你自己的主机ip。
看到如下内容即表示安装成功!

{
  "name" : "0cd29a7c4694",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "5r9QcaUjQGyykvIPHGkZsg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

修改配置,解决跨域访问问题

首先进入到容器中,然后进入到指定目录修改elasticsearch.yml文件

docker exec -it es bash
cd /usr/share/elasticsearch/config/
vi elasticsearch.yml

在这里插入图片描述
在elasticsearch.yml的文件末尾加上:

http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述
在这里插入图片描述
修改配置后退出重启容器即可

exit
docker restart es

安装ik分词器

es自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下:

注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。

docker exec -it es bash
cd /usr/share/elasticsearch/plugins/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

在这里插入图片描述

kibana安装

docker安装kibana

docker pull kibana:7.6.2

在这里插入图片描述

启动kibana

docker run --name kibana --link=es:es  -p 5601:5601 -d kibana:7.6.2

在这里插入图片描述

进入kibana容器后台,配置kibana.yml

docker exec -it kibana bash
cd config/
vi kibana.yml

在这里插入图片描述
在这里插入图片描述
重启kibana

docker restart kibana

启动以后可以打开浏览器输入

http://192.168.232.132:5601
就可以打开kibana的界面了。
kibana启动会有点慢,先出下下图所示
在这里插入图片描述
等待一会儿,即可看到kibana界面
在这里插入图片描述
测试es使用ik分词

POST /_analyze
{
 "analyzer": "ik_max_word", 
  "text": "欢迎关注厚溥技术微信公众号栈,伴随你一起学习成长!"
}

在这里插入图片描述
到这里我们的es就部署成功了

下一篇:关于Springboot整合es,请移步微信公众号"厚溥技术栈"
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker、Jenkins、GitLab、Maven、Harbor和Spring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署。 Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像的推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins会自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送到Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值