ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES 常见问题

2022-07-17 17:41:18  阅读:193  来源: 互联网

标签:常见问题 写入 索引 调优 master 节点 ES


参考:

https://developer.aliyun.com/article/879525

ES调优手段

设计调优

a. 根据业务增量需求,采取基于日期模板创建索引,通过 rollover API 滚动索引;(rollover API我会单独写一个代码案例做讲解,公众号:JavaPub) b. 使用别名进行索引管理;(es的索引名不能改变,提供的别名机制使用非常广泛。) c. 每天凌晨定时对索引做force_merge操作,以释放空间; d. 采取冷热分离机制,热数据存储到SSD,提高检索效率;冷数据定期进行shrink操作,以缩减存储; e. 采取curator进行索引的生命周期管理; f. 仅针对需要分词的字段,合理的设置分词器; g. Mapping阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。

写入调优

写入前副本数设置为0;
写入前关闭refresh_interval设置为-1,禁用刷新机制;
写入过程中:采取bulk批量写入;
写入后恢复副本数和刷新间隔;
尽量使用自动生成的id。

查询调优

禁用wildcard;(通配符模式,类似于%like%)
禁用批量terms(成百上千的场景);
充分利用倒排索引机制,能keyword类型尽量keyword;

ES部署时Linux系统设置调优

1,关闭swap
2,设置最大文件句柄数
3,堆内存设置:节点内存/2

 

ES怎样进行master选举

1,Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之间通过这个 RPC 来发 现彼此)和 Unicast(单播模块包含一个主机列表)这两部分;

2,对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排序,每次选举每个节 点都把自己所知道节点排一次序,然后选出第一个(第 0 位)节点,暂且认为它是 master 节点。

3,如果对某个节点的投票数达到一定的值(可以成为 master 节点数 n/2+1)并且该节点自己也选 举自己,那这个节点就是 master。否则重新选举一直到满足上述条件。

避免脑裂

1,当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;

2,当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data节点,避免脑裂问题。

 

Lucene 的segment

1,Lucene 索引是由多个段组成,段本身是一个功能齐全的倒排索引。

2,段是不可变的,允许 Lucene 将新的文档增量地添加到索引中,而不用从头重建索引。

3,对于每一个搜索请求而言,索引中的所有段都会被搜索,并且每个段会消耗CPU 的时钟周、文件句柄和内存。这意味着段的数量越多,搜索性能会越低。

4,为了解决这个问题,Elasticsearch 会合并小段到一个较大的段,提交新的合并段到磁盘,并删除那些旧的小段。

 

标签:常见问题,写入,索引,调优,master,节点,ES
来源: https://www.cnblogs.com/tkzc2013/p/16487813.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有