1024_day03_分布式搜索引擎ElasticSearch

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

 

 

 

 

 

 

 

 

 

 

 

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...