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:38
  • 58069

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

最佳字段(Best Fields) 假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样: PUT /my_index/my_type/1 { "title": "Qui...
  • dm_vincent
  • dm_vincent
  • 2014-12-09 10:23:13
  • 31217

Elasticsearch调优设置

Elasticsearch默认是提供了一个非常简单的即开即用体验。用户无需修改什么配置就可以直接使用全文检索、结果高亮、聚合、索引功能。 但是想在项目中使用高性能的Elasticsearch,有...
  • qq_18145031
  • qq_18145031
  • 2016-11-22 18:48:35
  • 8694

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

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

Elasticsearch笔记九之优化

elasticsearch优化,极速查询
  • ty4315
  • ty4315
  • 2016-09-13 23:44:43
  • 1669

Elasticsearch性能优化官方建议

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

ElasticSearch 优化总结

ElasticSearch 优化总结 目录 ElasticSearch 优化总结 目录 OS OS 参数 ES Linux Release: CentOS r...
  • iorichang
  • iorichang
  • 2016-12-26 10:22:35
  • 4480

eBay Elasticsearch性能优化实践

原文:eBay网Elasticsearch性能优化实践 作者:Pei Wang 翻译:无阻我飞扬 摘要:Elasticsearch是基于Apache Lucene的开源搜索和分析引擎,...
  • dev_csdn
  • dev_csdn
  • 2018-01-12 15:47:33
  • 2930

ElasticSearch性能优化策略

一、服务器部署算法的基本思想 1、增加1-2台服务器,用于负载均衡节点 elasticSearch的配置文件中有2个参数:node.master和node.data。这两个...
  • mlljava1111
  • mlljava1111
  • 2016-04-21 20:58:10
  • 856

Elasticsearch全方面优化点

Elastic优化点优化点分片策略 分片分配行为 segement 路由优化 避免内存交换(内存交换空间一定要关闭) 副本 控制索引合并 tranlog 内存分配大小 http://www.tuico...
  • dujunjiehaha
  • dujunjiehaha
  • 2017-06-09 13:57:15
  • 219
收藏助手
不良信息举报
您举报文章:elasticsearch-搜索引擎-性能优化(4)
举报原因:
原因补充:

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