欢迎投稿

今日深度:

Elasticsearch干货(九):Elasticsearch崩溃风险,elasticsearch干货

Elasticsearch干货(九):Elasticsearch崩溃风险,elasticsearch干货


我们在使用Elasticsearch时应该选择性的避免一些可能导致集群变慢甚至崩溃的操作,这是非常必要的。

通配符

我们在查询时,或多或少可能会用到通配符(比如:*)来进行查询操作。但是一个通配符下对应的往往是非常大的数据集,这种情况下,很容易导致集群变慢。所以我们在使用通配符时一定要注意,通配符下的数据集是否过大。

对于分词字段聚合查询

我们一定要避免对分词字段的聚合操作,尤其是类似content这类字段,分词结果往往数量级很大。Elasticsearch中对于分词字段的聚合是针对分词结果的term进行聚合,而非整个field_value,这种操作结果就是占用大量的系统内存。所以,需要聚合的字段我们不要分词,一般设置keyword即可。

聚合基数

对于聚合字段,如果聚合的基数很大,一样会导致系统很大的开销。什么是聚合基数呢?举个例子说就是,你将要对人名进行分组聚合,可以想像,一旦你的系统中用户数过亿,那这个基数就非常大了。所以对于基数过大的聚合,最好还是通过其他办法来实现聚合操作。

Mapping

我们都知道,Elasticsearch中每个节点都是可以处理index、delete、update、search请求的。但是在index时,如果插入的doc中存在一个未知字段,那就涉及到mapping的修改(增加新field)。但是mapping修改是要锁住整个索引的,因为mapping作为集群状态信息是维护在Master,虽然所有节点都有同步集群状态,但只有Master可以进行修改,就是说要等待Master修改Mapping信息并同步到所有节点后,才能进行下一步插入操作,这期间整个索引都是锁住的。这在一些场景是很致命的,所以一般建议配置Mapping:dynamic=false,来禁止Mapping动态修改,但这只是从一定程度上减少了Mapping对集群的影响。

参考:Elasticsearch原理(五):Master机制及脑裂分析


更多:Elasticsearch深入理解专栏
——————————————————————————————————
作者:桃花惜春风
转载请标明出处,原文地址:
https://blog.csdn.net/xiaoyu_BD/article/details/82842689
如果感觉本文对您有帮助,您的支持是我坚持写作最大的动力,谢谢!

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/32172.html NewsArticle Elasticsearch干货(九):Elasticsearch崩溃风险,elasticsearch干货 我们在使用Elasticsearch时应该选择性的避免一些可能导致集群变慢甚至崩溃的操作,这是非常必要的。 通配符 我们在查询时,...
相关文章
    暂无相关文章
评论暂时关闭