简单讲ES开箱即用,不用任何配置也能玩转搜索引擎;以下内容是根据易企秀线上实际使用场景进行的安装和配置,支持冷热数据分离
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.0.0-linux-x86_64.tar.gz
./elasticsearch -d # -d 意思是后台运行,需要注意的是es要求非Root用户启动
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
mkdir plugins/ik
unzip elasticsearch-analysis-ik-7.0.0.zip ik
es的安装和配置是非常轻量级的,为满足多种不同的应用场景,底层提供多种数据结构支持,并做了大量的默认配置优化,部分配置针对具体的用户使用场景可能是冗余的,甚至可能造成性能的下降,需要根据实际业务场景做适当取舍,我们结合自身使用场景做了如下优化(文章中有疏漏或不正确的地方也欢迎点评指正)。
sudo swapoff -a
# 禁用swapping,开启服务器虚拟内存交换功能会对es产生致命的打击
vm.max_map_count
# 在/etc/sysctl.conf文件中找到该参数,修改 655300 为 262144后 执行sysctl -p,不然启动时会报值太小
常用的配置在两个文件里,分别是 elasticsearch.yml 和 jvm.options(配置内存)
-Xms10g
-Xmx10g
基础配置:
cluster.name
# 配置es集群名称,相同名称的集群会自动识别
node.name
# es7.0集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
path.data
# 指定数据存放目录,多目录逗号分隔
path.logs
# 指定日志存放目录
network.host
# 指定本机ip地址
http.port
# 指定http协议端口 ,多实例部署时需要修改
transport.tcp.port
# 指定tcp协议端口,多实例部署时需要修改
cluster.initial_master_nodes: [" "]
# 指定主节点列表,需要在每个节点上配置该参数
discovery.zen.ping.unicast.hosts: []
# 广播节点
优化配置:
bootstrap.memory_lock: true
#设置为true锁住内存,当服务混合部署了多个组件及服务时,应开启此操作,允许es占用足够多的内存。
indices.breaker.request.limit: 10%
#设置单个request请求的内存熔断限制,默认是jvm堆的60%(es7.0引入了新的内存熔断机制,会智能判断,规避OOM)。
index.merge.scheduler.max_thread_count: 1
#设置segment合并时占用的线程数,配置线程数越多对磁盘io消耗就越大(SSD忽略)。
indices.queries.cache.size:20%
#query请求可使用的jvm内存限制,默认是10%。
indices.requests.cache.size:2%
#查询request请求的DSL语句缓存,被缓存的DSL语句下次请求时不会被二次解析,可提升检索性能,默认值是1%。
indices.fielddata.cache.size:30%
#设置字段缓存的最大值,默认无限制。
node.attr.box_type: hot
#用来对索引数据进行冷热分离,需要注意的是 setting 中也要进行相关配置 "index.routing.allocation.require.box_type": "hot"
原文:https://www.cnblogs.com/ExMan/p/11351296.html