1.es介绍
--1.1什么是ElasticSearch
Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
--1.2ElasticSearch与Solr
- es是基于lucene的
- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch
2.windows版本ElasticSearch安装与启动
--2.1下载ES压缩包
ElasticSearch分为Linux和Window版本,基于我们主要学习的是ElasticSearch的Java客户端的使用,所以我们课程中使用的是安装较为简便的Window版本,项目上线后,公司的运维人员会安装Linux版的ES供我们连接使用。
--2.2安装ES服务
- Window版的ElasticSearch的安装很简单,类似Window版的Tomcat,解压开即安装完毕,解压后的ElasticSearch
的目录结构如下:
修改elasticsearch配置文件:config/elasticsearch.yml,增加以下两句命令:
http.cors.enabled: true
http.cors.allow‐origin: "*"
此步为允许elasticsearch跨越访问,如果不安装后面的elasticsearch-head是可以不修改,直接启动。
--2.3启动ES服务
点击ElasticSearch下的bin目录下的elasticsearch.bat启动,控制台显示的日志信息如下:
注意:9300是tcp通讯端口,集群间和TCPClient都执行该端口,9200是http协议的RESTful接口 。
- 通过浏览器访问ElasticSearch服务器,看到如下返回的json信息,代表服务启动成功:
注意:ElasticSearch是使用java开发的,且本版本的es需要的jdk版本要是1.8以上,所以安装ElasticSearch之前保
证JDK1.8+安装完毕,并正确的配置好JDK环境变量,否则启动ElasticSearch失败。
3.linux中docker安装es和可视化工具kibaba
Linux 下 Docker 安装elasticsearch并配置密码使用X-pack做安全验证
3.1下载镜像文件
docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据
3.2创建实列
1.Elasticsearch
-
将es的配置文件挂在到外部
mkdir -p /mydata/elasticsearch/config -
将es的数据存储文件夹挂在到外部
mkdir -p /mydata/elasticsearch/data -
配置让es能够被远程的任何机器访问,
>>
表示写入到elasticsezrch.yml文件中
echo "http.host: 0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml -
创建Elasticsearch实例
docker run -d -it --restart=always --privileged=true --name=es1 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e ES_JAVA_OPTS="-Xms256m -Xmx256m" f29a1ee41030
name :为容器起一个名字
-p : 暴露端口,9200是外部http通信,9300是es集群内部通信
: 换到下一行
-e "discovery.type=single-node": 指定为单节点模式下运行
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" :指定初始64m,最大128m,要不然es会默认占满内存
-v : 进行挂载
-d : 使用哪个镜像后台启动es
f29a1ee41030:镜像id
##
docker run -d -it --restart=always --privileged=true --name=es7 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /home/user/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e ES_JAVA_OPTS="-Xms256m -Xmx256m" f29a1ee41030
- 改变文件夹config,data,plugins权限
输入ll,查看文件夹权限
如果不上图所示样子,则表示只有root用户才有可写权限
输入chomd -R 777 /mydata/elasricsearch
表示给此文件夹下赋予其他用户可读可写权限
安装kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://1.15.138.161:9200 -p 5601:5601 -d kibana:7.4.2