Elasticsearch实践指南
admin
2023-03-23 10:20:23
0

Elasticsearch实践指南http://nginxs.blog.51cto.com/


   从2014年到现在接触ESElasticsearch)已经两年多了,感触良多尤其ES的开盒即用特性完全区别于之前接触复杂的hadoop和solor。ES不需要你对它了解就能很快入门,而且ES的实时搜索,自动拓展,自愈功能深深吸引我。最近很多朋友也开始使用向我问了很多常见问题,我在这总结了一些使用中踩过的坑希望大家对ES有更多的了解。


简介

  Elasticsearch是基于Lucene开发的一个准实时搜索服务,搜索延时在秒级。ES存储主要通过自身解析json数据,然后json里面的key映射为Lucene里面的字段,使用lucene进行搜索和索引。ES不仅支持普通的全文搜索和按词搜索,还支持模糊匹配,近义词搜索,聚合,排序,geo等特性。ES的开源特性也使得它社区活跃,版本迭代更新迅速,现在主要分为2.0和5.0两个大版本,建议大家使用最新的5.0版本会更容易升级和获取一些更高级的特性。


下面是一些上线或者线上使用Elasticsearch需要了解的特性


CPU

es主要依赖于硬盘和内存,所以对CPU要求不高,一般8核就行,如果并发比较多可以适当增加。

 

硬盘

    硬盘决定你es写入读取数据速度,磁盘建议用15k的机械硬盘,并配置为raid0,如果集群节点<5个,请使用raid5,这样保证一个硬盘故障不会影响服务。虽然es本身可以通过分片去保证数据的冗余,但是es每个节点大量数据爬行还是对较小的集群有一定影响。(土豪直接上SSD,需要正确配置I/O调度程序,阵列卡建议>h710,否则就像ssd跑车上安装一个拖拉机引擎)

 

内存优化

1. ES的内存使用分为两部分ES缓存和Lucene通过内核缓存加速一些数据

. 如果服务器内存  `nG > 64G`,ES的内存尽量设置低于32G,建议最大31G. 因为es使用“内存指针压缩”技术,一旦内存内存大于32G这项技术将失效,内存有效使用只有原来的60%~70%。你不必为内存浪费而担心,因为lucene会通过系统把一些聚合和排序的数据缓存起来方便你快速查询使用。

3 .如果服务器内存  `nG < 64G`,建议给ES分配  内存 (n-2)/2G.  首先2G是给系统预留,然后eslucene

4 . 如果你想继续你的实时查询,尽量不要使用swap(交换分区),建议关闭系统swap使用

 

网络

  1. 建议千兆光纤,高速网络可以保证集群节点故障后快速恢复,以及添加节点后快速再平衡。

  2. 尽量不要跨机房,除非需要灾备,或者有足够的带宽,否则你将迎来es节点数据同步的无限等待。

 

数据文档结构数据

因为所有es节点需要实时同步‘索引列表’,‘文档类型’,‘字段名’等信息,所以在节点数固定的情况下索引,字段名等不要太多否则会给esmaster节点造成压力。

简单举例:我要保存用户提交字段和信息,各个字段名因为是动态生成,理论上是无上限的,但是esmaster要实时的同步这些字段信息到每个节点,如果现在只有100个字段还好,要是有1000个字段就会产生问题,如果有2000个字段就严重到无法使用了,当然索引的数量也是同样的意义,

 

索引优化

es的每个索引默认总计10个分片,5个主分片,每个主分片对应一个副分片。

1 当然很多情况下这个无法满足你实际需求,例如你的集群有8个节点,计划单个索引超过100亿条数据,为了让这个索引查询速度快一点,你可以增加索引分片数量:1.增加主副分片对数,增加副分片的数量。这样不仅加速搜索还增加了数据的冗余。

2 . 一些只读的索引可以使用‘optimizeAPI’进行把每个索引合并为一个单独数据段,这样可以节省资源加速操作,但是需要注意这样会消耗一定IO,如果当前节点请求繁忙,不要进行此类操作。

3 . 在使用索引的时候尽量使用索引别名,在以后索引重建或者索引名变更时避免宕机维护。

 

操作优化

1. 并发请求不要一次太多,否则超过es内部队列长度将失败。

2. 如果一次一定要提交太多任务写入尽量添加失败判断,一旦失败等待3~5秒重试操作,否则数据将丢失。

3.文档尽量一次写入不要更改和删除,因为es的更改和删除只是给旧数据做了一个标签,查询的时候依然会查询匹配,只是不在结果中计算。


故障处理

  1. 如果有ES集群单节点掉出集群不要慌张ES有自愈的能力,你只需要保证集群稳定,磁盘充足即可自动修复。

  2. 如果集群突然大多节点掉出集群,且出现分片丢失,那你需要考虑分片丢失是否能够接受,如果不能你可以通过同时停止全部节点,并启动全部节点进入时间门来尝试恢复全部数据。

  3. 正常情况下少数节点掉出集群,导致一些只读的分片丢失,可以把这些掉出的节点重新加入回集群即可恢复分片。

    http://nginxs.blog.51cto.com/

相关内容

热门资讯

玩家最新攻略“相约福建麻将有没... 您好:相约福建麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
玩家分享攻略“荊州晃晃麻将怎么... 您好:荊州晃晃麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
石破茂再批高市:安倍、菅义伟、... 据日本“PRESIDENT Online”网站12月25日报道,高市早苗所谓“台湾有事”相关言论引发...
【第一财经】“乐酷炸/金/花到... 【第一财经】“乐酷炸/金/花到底是不是挂?”(原来真的有挂)您好,乐酷炸/金/花这个游戏其实有挂的,...
玩家攻略科普“超稳牛牛是不是有... 有 亲,根据资深记者爆料超稳牛牛是可以开挂的,确实有挂(咨询软件无需打开...
今日重大消息“天天微友怎么开挂... 家人们!今天小编来为大家解答天天微友透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
重磅消息“新大圣牛牛是不是有挂... 重磅消息“新大圣牛牛是不是有挂?”(外卦神器下载)您好,新大圣牛牛这个游戏其实有挂的,确实是有挂的,...
【第一消息】“约约麻将真的有挂... 【第一消息】“约约麻将真的有挂吗?”(太坑了果然有挂)您好,约约麻将这个游戏其实有挂的,确实是有挂的...
今日重磅消息“欢乐龙城3到底是... 家人们!今天小编来为大家解答欢乐龙城3透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
我来教教您“新人海炸/金/花有... 家人们!今天小编来为大家解答新人海炸/金/花透视挂怎么安装这个问题咨询软件客服徽9784099的挂在...