最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

业界 admin 1浏览 0评论

哪些企业在用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/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,请移步微信公众号"厚溥技术栈"

哪些企业在用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/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)

  1. 暂无评论