elasticsearch-搜索引擎-性能优化(4)

原创 2015年05月17日 17:18:41

性能优化,主要体现在索引优化和检索优化两方面,其实索引优化是直接作用于检索优化。下边讲的优化偏应用层面,较低层偏jvm、es深层优化暂不在本篇涉及。

一、索引优化

   (1)字段索引类型选择优化

    索引类型在es中包括String,Integer,Long,Float等简单类型,也包括:Array(数组型),Object(对象类型)。一般的应用前边的简单类型就够用了。这些类型也都是es在lucene的类型之上做的更加面向对象的封装。

       索引类型选择的原则:是能数值型就不要字符串型。除了所占索引大小不一样外,在条件检索时数值型的等于或范围等的检索要高于字符串型几个数量级,尤其当数据量庞大时尤为明显。

      (2)字段索引选项优化

       在mapping时,对于某个索引字段有多个选项,包括是分词器选择(analyzer)、是否索引(index)、是否存储(store)。

       分词与否对索引的时候非常大,除了分词时间外,一般来说它也会扩大索引所占的空间(增大了term的个数,如果不分词则term只能为1个)。在选择分词器时应该配置好是索引分词还是nlp等不同种类的分词。

       是否索引,该字段是否可以用于条件检索,如果不用于检索,则分词器之类的设置是什么都不会启作用,像这样的设置字段往往会选择存储,如备注这样的字段,往往是不需要索引的,而是在查询时顺便取出其值,则只需设置其为存储store:yes即可。

     是否存储,即该字段的值是否在搜索出来的结果中予以显示,不选择的话,则该命中该条记录的结果集中是看不到该字段的返回值的,如果不存储,则将大大降低索引所占空间的值。

      (3)索引库的系统配置优化

          主要是两个参数,index.translog.flush_threshold_ops”和“index.refresh_interval”,前者是es用translog机制做索引均衡时的重要参数,默认为5000,即当索引数超过该值时,则进行一次集群的均衡,而均衡是比较费时间和资源的,故应该放大一些,如扩大1-5倍是比较常见的选择。后一参数主要针对搜索引擎组中延迟commit而设置,即多长周期进行一次系统的commit,设置成-1则需要手动commit才能使索引可见。

         其次像分片数、副本数、索引合并过程中的segments的数量也会对索引和检索性能影响较大,但采用默认设置能解决大多数的应用需求。


二、检索优化

     (1)相同操作,对数据值和字符串等非数收据值的两个字段的话,前者会高出多个数量级。

     (2)尽量采用分页检索,不要一次检索出太多,对各方面压力均比较大,且会对并发性能影响较大。

     (3)像范围检索和排序等检索操作是比较耗时和用资源的,如果一定要用,请尽量选择是数值型,通过合理的设计是可以解决这个问题的。

     (4)大数据条件检索时,应多添加条件减小命中的整体结果体量,即多条件and检索比单条件检索更节省时间。对已有数据做一些类似于关系型数据库中的分区操作是很好的选择,如用一个数值型字段,或是直接用es的自带_type字段,当然后者要优选于前者,效果大数据条件时会更好。


由于个人对es的学习时间和深度有限,若有不足之处欢迎交流,欢迎加入网络爬虫、nlp群320349384共同交流IT相关技术问题。

亿级规模的Elasticsearch优化实战

本次分享主要包含两个方面的实战经验:索引性能和查询性能。 一. 索引性能(Index Performance) 首先要考虑的是,索引性能是否有必要做优化? 索引速度提高...
  • opensure
  • opensure
  • 2015年08月13日 19:43
  • 52186

Elasticsearch写入性能优化

性能测试建议 在一个节点的一个分片,不设置副本,测试性能 在完全默认设置上记录性能数据,作为测试的基准线 确保性能测试持续30分钟以上以确认长时间的性能;短时间的测试可能不会碰到segment合并和G...
  • jamesjxin
  • jamesjxin
  • 2016年01月13日 17:26
  • 23254

Elasticsearch写入性能优化

性能测试 在一个节点的一个分片,不设置副本,测试性能在完全默认设置上记录性能数据,作为测试的基准线确保性能测试持续30分钟以上以确认长时间的性能;短时间的测试可能不会碰到segment合并和GC...
  • u010670689
  • u010670689
  • 2017年06月17日 23:43
  • 761

elasticsearch-搜索引擎-性能优化(5)

上一篇的优化主要为纯应用层的优化,本篇主要讲基于es参数配置优化及jvm的关系,以es1.2.1及以上版为参考。 (1)分片数的设置。默认为5个。最佳的设置要进行单个分片的索引压力测试,跟机器的配置...
  • erliang20088
  • erliang20088
  • 2015年05月17日 17:18
  • 1133

elasticsearch 性能指标

转载目的:学习es相关性能指标,指导对es的优化。 转载于:http://blog.csdn.net/yangwenbo214/article/details/74000458 一、Ela...
  • pangyemeng
  • pangyemeng
  • 2017年08月24日 10:00
  • 1069

ElasticSearch优化的一些方法 些方法

多线程程序插入,可以根据服务器情况开启多个线程index 速度可以提高n倍, n>=2 如果有多台机器,可以以每台设置n个shards的方式,根据业务情况,可以考虑取消replias cur...
  • BDblog_chang
  • BDblog_chang
  • 2017年07月29日 14:28
  • 299

elasticsearch三个重要的优化

编辑:elasticsearch-2.3.3/bin/ elasticsearch  加上: export ES_HEAP_SIZE=10g 或者启动的时候设置参数,确保Xmx和Xms大...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2017年02月10日 16:18
  • 957

Elasticsearch性能优化官方建议

原文地址:http://www.cnblogs.com/cutd/p/5800795.html 如何提高ES的性能 不要返回较大的结果集 ES是设计成一个搜索引擎的,只擅长返...
  • tanga842428
  • tanga842428
  • 2017年04月12日 11:07
  • 862

Elasticsearch笔记九之优化

elasticsearch优化,极速查询
  • ty4315
  • ty4315
  • 2016年09月13日 23:44
  • 1356

[Elasticsearch] 多字段搜索 (二) - 最佳字段查询及其调优

最佳字段(Best Fields) 假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样: PUT /my_index/my_type/1 { "title": "Qui...
  • dm_vincent
  • dm_vincent
  • 2014年12月09日 10:23
  • 29489
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:elasticsearch-搜索引擎-性能优化(4)
举报原因:
原因补充:

(最多只允许输入30个字)