简单讲述ES开箱即用,不用任何配置也能玩转搜索引擎,以下是在centos7.5中安装ES过程。
注意:下面的过程是在一台服务器上模拟的3个节点的集群搭建。
服务器信息
服务器IP | 安装路径 | http端口 | transport端口 | 操作系统 | ES版本 | 节点名称 |
---|---|---|---|---|---|---|
10.0.0.2 | /usr/local/elk-7.0.1/ | 59201 | 59301 | CentOS7.5 | 7.0.1 | node-1 |
10.0.0.2 | /usr/local/elk-7.0.1/ | 59203 | 59303 | CentOS7.5 | 7.0.1 | node-2 |
10.0.0.2 | /usr/local/elk-7.0.1/ | 59205 | 59305 | CentOS7.5 | 7.0.1 | node-3 |
创建 elastic 用户
useradd -m elastic
修改系统配置信息
- 禁用swapping,开启服务器虚拟内存交换功能会对elasticsearch 产生致命的打击
sudo swapoff -a
- 增加 /etc/sysctl.conf 配置,执行 sysctl -p 生效
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
- 增加 /etc/security/limits.conf 配置
vi /etc/security/limits.conf
elastic soft nofile 100001
elastic hard nofile 100002
elastic soft memlock unlimited
elastic hard memlock unlimited
下载并解压
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
tar -zxf elasticsearch-7.0.1-linux-x86_64.tar.gz
mv elasticsearch-7.0.1 /usr/local/elk-7.0.1/
部署ES
- 修改 elasticsearch 目录的权限
chown -R elastic.elastic /usr/local/elk-7.0.1/elasticsearch-7.0.1
- jvm.options配置文件
jvm.options主要是进行java虚拟机的相关配置,官方建议分配给es的内存不要超出系统内存的50%,预留一半给Lucene,因为Lucene会缓存segment数据提升检索性能;内存配置不要超过32g,如果你的服务器内存没有远远超过64g,那么不建议将es的jvm内存设置为32g,因为超过32g后每个jvm对象指针的长度会翻倍,导致内存与cpu的开销增大。
vi config/jvm.options
-Xms4g
-Xmx4g
- elasticsearch.yml配置文件
vi config/elasticsearch.yml
基础配置:
# 配置es集群名称,相同名称的集群会自动识别
cluster.name: test-cluster
# es7.0集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
node.name: node-1
# 是否为主节点
node.master: true
# 是否开启数据节点
node.data: true
# 预处理数据
node.ingest: true
# 指定数据存放目录,多目录逗号分隔,可以配置相对ES根目录路径
path.data: data
# 指定日志存放目录,可以配置相对ES根目录路径
path.logs: logs
# 指定本机ip地址
network.host: 10.0.0.2
# 指定http协议端口,默认9200,多实例部署时需要修改
http.port: 59201
# 是否允许跨域请求
http.cors.enabled: true
# 允许跨域请求的地址,*代表所有
http.cors.allow-origin: "*"
# 指定tcp协议端口,默认9300,多实例部署时需要修改
transport.port: 59301
# 广播节点
discovery.seed_hosts: ["10.0.0.2:59301", "10.0.0.2:59303", "10.0.0.2:59305"]
# 指定主节点列表,需要在每个节点上配置该参数,可以是节点名称,也可以是IP地址
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 在完全群集重新启动后阻止初始恢复,直到n个节点启动
gateway.recover_after_nodes: 3
# 设置许可证(基础版)
xpack.license.self_generated.type: basic
优化配置:
# 设置为true锁住内存,当服务混合部署了多个组件及服务时,应开启此操作,允许es占用足够多的内存。
bootstrap.memory_lock: true
# 设置单个request请求的内存熔断限制,默认是jvm堆的60%(es7.0引入了新的内存熔断机制,会智能判断,规避OOM)。
indices.breaker.request.limit: 10%
# 设置segment合并时占用的线程数,配置线程数越多对磁盘io消耗就越大(SSD忽略)。
#index.merge.scheduler.max_thread_count: 1
# query请求可使用的jvm内存限制,默认是10%。
indices.queries.cache.size: 20%
# 查询request请求的DSL语句缓存,被缓存的DSL语句下次请求时不会被二次解析,可提升检索性能,默认值是1%。
indices.requests.cache.size: 2%
# 设置字段缓存的最大值,默认无限制。
indices.fielddata.cache.size: 30%
# 用来对索引数据进行冷热分离,需要注意的是 setting 中也要进行相关配置 "index.routing.allocation.require.box_type": "hot"
node.attr.box_type: hot
节点2与节点3拷贝上面配置好的ES,在此之上,修改elasticsearch.yml配置文件中的下列参数:
node.name: node-2
network.host: 10.0.0.2
http.port: 59203
transport.port: 59303
node.name: node-3
network.host: 10.0.0.2
http.port: 59205
transport.port: 59305
安装插件
安装中文分词插件IK,插件版本要与ES版本保持一致,执行下面命令进行安装:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.1/elasticsearch-analysis-ik-7.0.1.zip
安装pinyin插件,插件版本要与ES版本保持一致,执行下面命令进行安装:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.0.1/elasticsearch-analysis-pinyin-7.0.1.zip
每个节点都需要进行安装,或者安装之后再将ES拷贝。
启动ES
su - elastic -c '/opt/elasticsearch/bin/elasticsearch -d'
ES 常用地址
1. 查看节点状态
curl http://10.0.0.2:59201/_cat/nodes?pretty
2. 查看集群状态
curl http://10.0.0.2:59201/_cluster/state?pretty
链接:
ES集群节点角色配置组合