最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
elasticsearch 5.0安装及集群的构建
linuxe发表于 2020-10-27 15:40 次浏览
 
版本介绍 :
 
    ElasticSearch各个版本迭代到现在为止,可以粗略的划分为三个阶段。第一阶段:5.x版本之前也包括5.x版本,第二阶段:6.x版本,第三阶段:7.x版本及以后。
 
区别 :
 
    【第一阶段】从应用角度来说,基本可以不用深究了,那是ES的起初应用阶段,性能相对之后的版本都不是很好,现在也有些公司在用5.0之前的版本,值得注意的是5.0之前的版本要想升级到7.0版本,必须先升级到5.0,然后升级到6.0,再升级到7.0,不能直接升级到7.0,因为直接升级不了。5.0版本引入了新的字段类型Text/Keyword来替换String,新增了Reindex,这个功能在5.x以及之后特别友好,如果起初你建的索引数据不符合规范,只需修改一下索引模板,使用Reindex来重建索引,完成索引的快速重建。新增了Sliced Scroll 类型,从此以后可以使用Scroll类似于游标这种形式,可以快速向下检索数据,性能相比传统分页好太多。这个阶段连接ES的方式有两种即TransportClient和RestClient(Low level RestClient 和 High level RestClient),一个索引也允许有多个Type,支持索引模板的设置,但是多个索引模板如果被一个索引匹配到,那这多个模板将会被合并。
 
    【第二阶段】这个阶段基于负载的请求路由,目前的搜索请求是全节点轮询,那么性能最慢的节点往往会造成整体的延迟增加,新的实现方式将基于队列的耗费时间自动调节队列长度,负载高的节点的队列长度将减少,让其他节点分摊更多的压力,搜索和索引都将基于这种机制。值得注意的是,6.0版本开始不支持一个索引(index)里面存在多个Type,而且多个索引模板如果被一个索引匹配到,不会再合并,而只会匹配优先级最高的哪一个。另外6.8.0开始支持权限认证,通过设置ES内置用户及密码来保证了集群的访问权限。
 
    【第三阶段】到了7.0版本,首先集群连接方式只支持RestClient,TransportClient彻底被放弃,所以在项目中创建Es的客户端时,如果涉及以后Es升级,一定要在7.0之前的版本中使用Restclient连接ES,推荐使用High-level-Rest-Client。然后是程序包变大了,7.x之后默认打包JDK,所以程序包比之前6.x大了200MB+,正是JDK的大小。另外正式废除了单个索引下多Type,并且有意忽略了type这个概念,es7默认使用_doc作为type。

环境要求: 

在安装Elasticsearch之前需要先部署好JDK的环境,这里我们以JDK1.8为例。 

1、首先到官方下载JDK最新的tar包,然后将其解压到我们自己创建的目录,如/usr/local/jdk1.8 

2、修改环境变量,编辑/etc/profile文件,添加以下行 

 

1 JAVA_HOME=/usr/local/jdk1.8
2 PATH=$JAVA_HOME/bin:$PATH
3 export PATH JAVA_HOME

3、执行下profile文件使其生效

 

 

1 source /etc/profile

4、执行java -version看看环境是否成功配置,如图代表配置成功

 

 

安装Elasticsearch 

1、到官方下载Elasticsearch的tar包并解压,可以看到对应目录如下 

 

2、进入config目录,编辑配置文件elasticsearch.yml,修改以下项(特别注意discovery.zen.minimum_master_nodes一项,官方推荐设置数目是节点数量除以2再加1,我用2台节点测试的时候发现如果设置为2,那么必须要2台节点都同时启动才会正常,也就是说这里可以理解为设置了几,那么必须至少启动几个节点)

 

1 cluster.name: estest  #配置集群的名字,就算只有一台服务器,Elasticsearch也会认为自己是一个集群,并且是Master角色
2 node.name: server1  #节点名字
3 #path.data: /path/to/data  #数据存放路径,根据需求更改
4 #path.logs: /path/to/logs  #日志存放路径,根据需求更改
5 network.host: 0.0.0.0  #监听的地址,页可以写本机IP
6 http.port: 9200  #监听端口
7 discovery.zen.ping.unicast.hosts: ["10.254.15.69", "10.254.15.70"]  #设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
8 discovery.zen.minimum_master_nodes: 1  #设置有成为Master节点的主机数量

3、如果直接用root来运行./bin/elasticsearch会提示不能在root下执行,如图

 

4、创建一个用户用于运行ES,然后将Elasticsearch整个目录属主修改为该用户

1 useradd elasticsearch
2 chown -R elasticsearch.elasticsearch /elasticsearch-5.3.0

 

5、创建存放数据的目录,这个目录就是在elasticsearch.yml里所指定的目录,属主也要修改为对应用户

1 mkdir -p /elasticsearch/logs
2 mkdir /elasticsearch/data                       
3 chown -R elasticsearch.elasticsearch /elasticsearch

 

6、用创建的账户运行Elasticsearch,如果遇到以下错误,请做修改:

(1)max virtual memory areas vm.max_map_count [65530] is too low

修改/etc/sysctl.conf,增加一行vm.max_map_count= 262144。然后执行sysctl -p使其生效

(2)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

修改/etc/security/limits.conf,做以下配置

1 *                soft   nproc          65536
2 *                hard   nproc          65536
3 *                soft   nofile         65536
4 *                hard   nofile         65536

 

(3)memory locking requested for elasticsearch process but memory is not locked

将配置文件里的bootstrap.memory_lock: true注释掉

7、再次运行成功,监听了9200、9300两个端口,加-d选项可以让服务在后台运行。可以通过curl验证下
 

集群的构建:

在另一台节点上也做同样的操作,只不过yml配置文件里的node.name节点名字需要改一下,要保证唯一性。以及network.host这项改为自己的IP即可。其他配置和第一台一致,然后用非root用户启动服务。


标签:Elasticsearc
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2020-10-21 11:45:58 关键词:Elasticsearch教程
摘要:简介 ElasticSearch一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它是用Java开发的,是当前流行的企业级搜索引擎。设计用于云计算中..
2020-10-20 16:16:20 关键词:Elasticsearch教程
摘要:因为总是看到很多同学在说elasticsearch性能不够好,集群不够稳定,询问关于elasticsearch的调优,但是每次都是一个个点的单独讲,很多时候都是case by case的解答,今天简单梳理下日常的..
2020-09-07 18:24:22 关键词:Elasticsearch教程
摘要:如果你渴望学习基于开源 Lucene 库的著名开源搜索引擎 Elasticsearch,那么没有比在本地安装它更好的方法了。这个过程在 Elasticsearch 网站中有详细介绍,但如果你是初学者,官方说明就比..