1.ElasticSearch?
Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速 度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分 布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发 的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用 于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2.ElasticSearch特点
(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公 司;也可以运行在单机上
(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
(3)开箱即用的,部署简单
(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理
3.docker安装下ElasticSearch
(1)下载镜像(下自己需要的版本)
docker pull elasticsearch:5.6.8
(2)创建容器
docker run ‐di ‐‐name=tensquare_elasticsearch ‐p 9200:9200 ‐p 9300:9300 elasticsearch:5.6.8
(3)浏览器输入地址:
http://自己的ip地址:9200/ 即可看到如下信息
4. 存在的问题
1.9200端口开启,但java访问的9300端口未开启
需要修改配置文件
进入容器,不能使用vi等命令,因为vi是我么宿主机的命令。
进入容器(exit退出容器)
docker exec ‐it tensquare_elasticsearch /bin/bash
我们需要以文件挂载的 方式创建容器才行,这样我们就可以通过修改宿主机中的某个文件来实现对容器内配置 文件的修改
(1)拷贝配置文件到宿主机 首先退出容器,然后执行命令:
docker cp tensquare_elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml
(2)停止和删除原来创建的容器
docker stop tensquare_elasticsearch docker rm tensquare_elasticsearch
(3)重新执行创建容器命令
docker run ‐di ‐‐name=tensquare_elasticsearch ‐p 9200:9200 ‐p 9300:9300 ‐v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8
(4)修改/usr/share/elasticsearch.yml 将 transport.host: 0.0.0.0 前的#去掉后保 存文件退出。其作用是允许任何ip地址访问elasticsearch .开发测试阶段可以这么做,生 产环境下指定具体的IP
(5)重启启动
docker restart tensquare_elasticsearch
(6)系统调优
修改/etc/security/limits.conf ,追加内容 nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制
* soft nofile 65536 * hard nofile 65536
修改/etc/sysctl.conf,追加内容
vm.max_map_count=655360
(7)重启docker启动tensquare_elasticsearch,不断查看后台查看tensquare_elasticsearch是否启动。
systemctl restart docker
(8)通过java 9003访问测试
2.内存过小
elasticsearch启动默认需要2g的内存,操作elasticsearch需要内存使用率在85%一下否则访问返回404
解决方法就是修改jvm空间分配
find /var/lib/docker/ -name jvm.options
修改配置
将 -Xms2g -Xmx2g 1 2 修改为 -Xms512m -Xmx512m 1 2
重启elasticsearch
5.IK分词器安装
(1)将ik文件夹上传至宿主机
(2)在宿主机中将ik文件夹拷贝到容器内 /usr/share/elasticsearch/plugins 目录下
docker cp ik tensquare_elasticsearch:/usr/share/elasticsearch/plugins/
(3)重新启动,即可加载IK分词器
docker restart tensquare_elasticsearch
6.HEAD插件安装
(1)修改/usr/share/elasticsearch.yml ,添加允许跨域配置
http.cors.enabled: true http.cors.allow‐origin: "*"
(2)重新启动elasticseach容器
(3)下载head镜像
docker pull mobz/elasticsearch‐head:5
(4)创建head容器
docker run ‐di ‐‐name=myhead ‐p 9100:9100 docker pull mobz/elasticsearch‐ head:5