大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的settings进行第一优化:

"index.translog.flush_threshold_ops":"10000"  "refresh_interval" : "1s"

这两个参数第一是到translog数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的。所以我们可以将这个值调大一些还是设为-1关闭,进而手动进行translog平衡。第二参数是刷新频率,默认为1s是指索引在生命周期内定时刷新,一但有数据进来能refresh像lucene里面commit,我们知道当数据addDoucment后,还不能检索到要commit之后才能行数据的检索,所以可以将其关闭,在最初索引完后手动refresh之,然后将索引setting里面的index.refresh_interval参数按需求进行修改,从而可以提高索引过程效率。

另外的知道ES索引过程中如果有副本存在,数据也会马上同步到副本中去。我个人建议在索引过程中将副本数设为0,待索引完成后将副本数按需量改回来,这样也可以提高索引效率。

“number_of_replicas”: 0

其实检索速度快度与索引质量有很大的关系。而索引质量的好坏主要与以下几方面有关:

分片数

分片数是与检索速度非常相关的的指标,如果分片数过少或过多都会导致检索比较慢。分片数过多会导致检索时打开比较多的文件别外也会导致多台服务器之间通讯。而分片数过少会导致单个分片索引过大,所以检索速度慢。基于索引分片数=数据总量/单分片数的计算公式,在确定分片数之前需要进行单服务单索引单分片的测试,目前我们测试的结果单个分片的内容为10G。

分片(Shard):一个索引会分成多个分片存储,分片数量在索引建立后不可更改,推荐【分片数*副本数=集群数量】

确定分片的数量和副本的数量

ElasticSearch在创建索引数据时,最好指定相关的shards数量和replicas,  否则会使用服务器中的默认配置参数shards=5,replicas=1。

因为这两个属性的设置直接影响集群中索引和搜索操作的执行。假设你有足够的机器来持有碎片和副本,那么可以按如下规则设置这两个值:

1) 拥有更多的碎片可以提升索引执行能力,并允许通过机器分发一个大型的索引;

2) 拥有更多的副本能够提升搜索执行能力以及集群能力。

对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。

这两个配置参数在配置文件的配置如下:

index.number_of_shards: 5 number_of_replicas: 1

Elastic官方文档建议:一个Node中一个索引最好不要多于三个shards.配置total_shards_per_node参数,限制每个index每个节点最多分配多少个发片.

http://www.open-open.com/doc/view/f240d61f8f7745098b4459c2483feb40

http://wenku.baidu.com/linkurl=bwD9mpebmQ28mqPj6Z0P1_A9bgFKnhIss8UrRA_Nsv7oTFuUEa9JgUdr9ynKc8OjWvd0pVLsp3tYZTFaNcxVt30EyFBCvkNflFGjMWcqsRq

副本数

副本数与索引的稳定性有比较大的关系,如果Node在非正常挂了,经常会导致分片丢失,为了保证这些数据的完整性,可以通过副本来解决这个问题。建议在建完索引后在执行Optimize后,马上将副本数调整过来。

分词

分词对于索引的影响可大可小,看自己把握。大家或许认为词库越多,分词效果越好,索引质量越好,其实不然。分词有很多算法,大部分基于词表进行分词。也就是说词表的大小决定索引大小。所以分词与索引膨涨率有直接关系。词表不应很多,而对文档相关特征性较强的即可。比如论文的数据进行建索引,分词的词表与论文的特征越相似,词表数量越小,在保证查全查准的情况下,索引的大小可以减少很多。索引大小减少了,那么检索速度也就提高了。

索引段

索引段即lucene中的segments概念,我们知道ES索引过程中会refresh和tranlog也就是说我们在索引过程中segments number不只一个。而segments number与检索是有直接联系的,segments number越多检索越慢,而将segments numbers 有可能的情况下保证为1,这将可以提高将近一半的检索速度。

https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html

原文链接:http://www.jianshu.com/p/b4eda49583b5

请关注LeadAI公众号,查看更多专业文章

点击量最高的文章

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接

ElasticSearch优化系列三:索引过程相关推荐

  1. ElasticSearch优化系列三:机器设置(内存)

    heap参数设置优化 命令行修改 ./bin/elasticsearch -Xmx10g -Xms10g xmx-JVM最大允许分配的堆内存,按需分配 xms-JVM初始分配的堆内存 此值设置与-Xm ...

  2. 游戏优化系列三:Unity游戏的黑屏问题解决方法

    作者 大家好,我叫Jack冯: 本人20年硕士毕业于广东工业大学,于2020年6月加入37手游安卓团队:目前主要负责海外游戏发行安卓相关开发. 系列目录 游戏优化系列一:海外谷歌应用适配相关 游戏优化 ...

  3. ElasticSearch优化系列一:集群节点规划

    节点职责单一,各司其职 elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: ...

  4. ElasticSearch优化系列二:机器设置(内存)

    点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 预留一半内存给Lucence使用 一个常见的问题是配置堆太大.你有一个64 GB的机器,觉得JVM内存越 ...

  5. 流程固化、僵化、优化的三个过程

    公众号回复:干货,领取价值58元/套IT管理体系文档 公众号回复:ITIL教材,领取最新ITIL4中文教材 正文 流程是任何企业运作的基础,企业所有的业务都是需要流程来驱动,就像人体的血脉,流程把相关 ...

  6. 网页优化系列三:使用压缩后置viewstate

    Asp.net中的服务器控件都启用了viewstate,虽然方便了开发人员,但页面大小及性能上确实有所影响,对于无需viewstate的控 件及页面可以直接把控件或页面的viewstate禁用掉,但对 ...

  7. ElasticSearch实战系列十一: ElasticSearch错误问题解决方案

    前言 本文主要介绍ElasticSearch在使用过程中出现的各种问题解决思路和办法. ElasticSearch环境安装问题 1,max virtual memory areas vm.max_ma ...

  8. ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合

    Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ...

  9. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    目录 一.分词器​ 1. 认识分词器 1.1 Analyzer 分析器 1.2 如何测试分词器 2. 内建的字符过滤器(character filter) 2.1 HTML过滤字符过滤器(HTML S ...

最新文章

  1. GOF23设计模式(创建型模式) 原型模式
  2. 利用日志审计追踪APT***
  3. python爬虫项目实例-Python爬虫实例项目
  4. VTK:图表之TreeToMutableDirectedGraph
  5. 牛客网【每日一题】7月30日题目精讲—Xor Path
  6. ubuntu安装 rust nightly_一起学Rust编程「1」:开发环境
  7. 一文详解python的类方法,普通方法和静态方法
  8. 毕业设计,MD2模型动画展示
  9. python自制海龟时钟
  10. Java编程之从零开始学Java——初始java
  11. word文档怎么压缩大小?
  12. python爬虫爬取图片代码_Python爬虫爬取煎蛋网图片代码实例
  13. 计算机调剂到mba,这8种考生不能调剂!MBA/MPAcc等考研生注意
  14. 最后的舞,请与我一起跳
  15. python字母转换_python中字母与ascii码的相互转换
  16. 使用百度API实现热点(WIFI)、GPS、基站定位
  17. Map key 和 value 的输出;
  18. 2021年安徽省职业院校技能大赛 网络搭建与应用竞赛
  19. html中怎么写小箭头,HTML+CSS入门 CSS用伪类制作小箭头
  20. 用jk触发器构成二分频电路_如何用下沿触发JK触发器设计一个同步二,四分频电路?...

热门文章

  1. java中简单的if语句_java中if语句的写法
  2. 江苏省计算机分级考试试题,江苏省计算机等级考试基础知识考题.doc
  3. java 高性能web_高性能WEB开发 - BearRui(AK-47) 的Blog - BlogJava
  4. 服务器版Windows7系统,windows7服务器版本
  5. mysql8.0.13可以用在生产环境_(13)生产环境出现大量DB死锁
  6. php magento 开发,php – Magento:如何将配置更改从开发环境迁移到生产环境?
  7. php psot传值_三种方法教你如何用PHP模拟post提交数据
  8. Leaving Auction CF 749D
  9. Ubuntu15.10使用mysql
  10. 二、MyBatis系列:全局配置文件