`
rockelixir
  • 浏览: 309485 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

elasticsearch 索引优化

阅读更多
ES索引优化篇主要从两个方面解决问题,一是索引数据过程;二是检索过程。
索引数据过程我在上面几篇文章中有提到怎么创建索引和导入数据,但是大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的settings进行第一优化:
1
"index.translog.flush_threshold_ops": "100000"

2
"index.refresh_interval": "-1"
,
这两个参数第一是到tranlog数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的。所以我们可以将这个值调大一些还是设为-1关闭,进而手动进行tranlog平衡。第二参数是刷新频率,默认为120s是指索引在生命周期内定时刷新,一但有数据进来能refresh像lucene里面commit,我们知道当数据addDoucment会,还不能检索到要commit之后才能行数据的检索所以可以将其关闭,在最初索引完后手动refresh一之,然后将索引setting里面的index.refresh_interval参数按需求进行修改,从而可以提高索引过程效率。
另外的知道ES索引过程中如果有副本存在,数据也会马上同步到副本中去。我个人建议在索引过程中将副本数设为0,待索引完成后将副本数按需量改回来,这样也可以提高索引效率。
“number_of_replicas”: 0
上面聊了一次索引过程的优化之后,我们再来聊一下检索速度比较慢的问题,其实检索速度快度与索引质量有很大的关系。而索引质量的好坏与很多因素有关。

一、分片数
分片数,与检索速度非常相关的的指标,如果分片数过少或过多都会导致检索比较慢。分片数过多会导致检索时打开比较多的文件别外也会导致多台服务器之间通讯。而分片数过少为导至单个分片索引过大,所以检索速度慢。
在确定分片数之前需要进行单服务单索引单分片的测试。比如我之前在IBM-3650的机器上,创建一个索引,该索引只有一个分片,分别在不同数据量的情况下进行检索速度测试。最后测出单个分片的内容为20G。
所以索引分片数=数据总量/单分片数
目前,我们数据量为4亿多条,索引大小为近1.5T左右。因为是文档数据所以单数据都中8K以前。现在检索速度保证在100ms 以下。特别情况在500ms以下,做200,400,800,1000,1000+用户长时间并发测试时最坏在750ms以下.

二、副本数
副本数与索引的稳定性有比较大的关系,怎么说,如果ES在非正常挂了,经常会导致分片丢失,为了保证这些数据的完整性,可以通过副本来解决这个问题。建议在建完索引后在执行Optimize后,马上将副本数调整过来。
大家经常有一个误去副本越多,检索越快,这是不对的,副本对于检索速度其它是减无增的我曾做过实现,随副本数的增加检索速度会有微量的下降,所以大家在设置副本数时,需要找一个平衡值。另外设置副本后,大家有可能会出现两次相同检索,出现出现不同值的情况,这里可能是由于tranlog没有平衡、或是分片路由的问题,可以通过?preference=_primary 让检索在主片分上进行。

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

四、索引段
索引段即lucene中的segments概念,我们知道ES索引过程中会refresh和tranlog也就是说我们在索引过程中segments number不至一个。而segments number与检索是有直接联系的,segments number越多检索越慢,而将segments numbers 有可能的情况下保证为1这将可以提到将近一半的检索速度。
$ curl -XPOST ‘http://localhost:9200/twitter/_optimize? max_num_segments =1′


五、删除文档
删除文档在Lucene中删除文档,数据不会马上进行硬盘上除去,而进在lucene索引中产生一个.del的文件,而在检索过程中这部分数据也会参与检索,lucene在检索过程会判断是否删除了,如果删除了在过滤掉。这样也会降低检索效率。所以可以执行清除删除文档。
$ curl -XPOST ‘http://localhost:9200/twitter/_optimize? only_expunge_deletes =true’
分享到:
评论

相关推荐

    Elasticsearch技术解析与实战_高清 带索引书签目录_朱林(著)

    Elasticsearch技术解析与实战,书藉高清,带索引书签目录,非常方便阅读。

    ElasticSearch企业级架构高阶视频教程.zip

    课时04:elasticsearch5.0集群安装 课时05:elasticsearch head插件讲解 课时06:elasticsearch kibana安装与使用 课时07:ik分词器插件的编译安装 课时08:ik分词器插件从mysql中定时获取扩展词停顿词 课时09:ik...

    01-微盟 Elasticsearch 运维实践

    1、Elasticsearch 使用建议:介绍在使用 Elasticsearch 进行数据搜索和分析时,应该遵循的一些规范和建议,包括 ES 架构的选择、索引结构的设计、查询语句的优化、写入优化等等,以提高 Elasticsearch 的性能、可靠...

    elasticsearch-HQ.zip

    ElasticHQ 是一个基于浏览器的直观和功能强大的 ElasticSearch 管理和监控工具,它提供了对 ElasticSearch 的实时监控、全集群管理、搜索和查询等功能。 ElasticHQ 主要优点如下: 能够实时监控ElasticSearch的集群...

    ElasticSearch5.2全网最全技术视频

    (2)包含市面上几乎没有的所有Elasticsearch高级知识点:包含地理位置搜索与聚合分析,term vector,suggester search,搜索模板定制,query执行剖析,数十种最全面的聚合分析,span query,shard分配定制,es插件...

    elasticsearch-benchmark-tool:压力测试工具,用于在Elasticsearch中对索引和搜索进行基准测试

    elasticsearch基准工具压力测试工具,用于在Elasticsearch中对索引和搜索进行基准测试运作方式该工具正在获取代表测试计划的配置文件。 每个步骤可以具有一个或多个以下控制器: 索引-索引1k批量的类似文档的日志(5...

    ElasticSearch Server Second Edition pdf

    最新版本的ElasticSearch Server Second Edition 云搜索技术相关的书 本书系统讲述如何运用ElasticSearch Server搭建分布式搜索平台,如何进行分片,如何建立索引,如何索引数据,如何进行性能优化等。

    Elasticsearch的性能优化

    Elasticsearch(后文简称ES)的基础是Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES的配置文件../config/elasticsearch.yml中配置,如下:磁盘涉及到IO的读写速度问题,因此如果条件允许的...

    elasticSearch查询语句DSL

    在这篇资源中,我们将详细介绍如何使用DSL...最后,我们将分享一些实用技巧和最佳实践,帮助您充分发挥DSL在Elasticsearch中的优势。我们将探讨性能优化、查询调试和索引优化等关键主题,以提升查询效率和搜索准确性。

    分布式存储+Elasticsearch+数据存储技术+分布式缓存避坑

    Elasticsearch是一个强大的开源搜索引擎,它为数据的存储、搜索和分析提供了高效、可扩展的解决方案。然而,尽管Elasticsearch本身具有许多优势,但在实际使用过程中,用户可能会遇到各种问题和挑战。为了帮助用户...

    Elasticsearch 是一个分布式的免费开源搜索和分析引擎.rar

    使用Elasticsearch作为存储引擎自动化业务工作流程 使用Elasticsearch作为地理信息系统(GIS)管理,集成和分析空间信息 使用Elasticsearch作为生物信息学研究工具来存储和处理遗传数据 索引和文档能搜索到的场景 ...

    wikiparse:解析Wikipedia转储并将页面数据索引到Elasticsearch

    在BZ2文件上运行jar: java -jar -Xmx3g -Xms3g wikiparse-0.2.1.jar --es http://localhost:9200 /var/lib/elasticsearch/enwiki-latest-pages-articles.xml.bz2 数据将被索引到名为en-wikipedia的索引(默认情况...

    一站式掌握elastic search基础与实战视频资源-百度云链接

    03-01 -书的目录与索引.mp4 03-02 -正排与倒排索引简介.mp4 03-03 -倒排索引详解.mp4 03-04 -分词介绍.mp4 03-05 -analyze_api .mp4 03-06 -自带分词器.mp4 03-07 -中文分词.mp4 03-08 -自定义分词之CharacterFilter...

    ElasticSearch Server

    本书系统讲述如何运用ElasticSearch Server搭建分布式搜索平台,如何进行分片,如何建立索引,如何索引数据,如何进行性能优化等。是一本不可多得的一本介绍分布式搜索开源框架的好书。

    积分管理系统java源码-index-management::card_file_box:用于Elasticsearch索引管理的OpenDistro

    Elasticsearch 索引管理的 Open Distro Open Distro for Elasticsearch Index Management 提供了一套用于监控和管理索引的功能。 它目前包含一个自动化系统,用于在整个生命周期中管理和优化指数,即指数状态管理。 ...

    ElasticSearch7.x整合Springboot2.x新闻搜索项目实战视频教程目录

    Springboot2.x整合ElasticSearch7.x新闻搜索项目实战视频教程:本课程基于Java开发,通过项目案例的方式...2. 技术点包括 高亮、搜索补全、分词器、核心概念、索引优化、前端代码仿搜索引擎、新闻测试数据 学习路线:

    Elasticsearch.docx

    Elasticsearch(存储/索引/查询),数据结构,高可用,集群架构演进

    HCIP-Big Data Developer V2.0视频.zip

    目录网盘文件永久链接 1.1 大数据主流技术 1.2 大数据场景化解决方案 ...3.18 ElasticSearch缓存和倒排索引 3.19 ElasticSearch索引和搜索流程 3.2 行业应用和诉求 3.20 ElasticSearch客户端和SQL使用 .....

    Elasticsearch的进阶之路

    4、Elasticsearch索引库的操作,包括增、删、查、改等;5、Elasticsearch模板和mapping的使用;6、学会使用Elasticsearch DSL查询;7、Elasticsearch强大聚合功能的使用;8、使用Java客户端操作Elasticsearch;9、...

Global site tag (gtag.js) - Google Analytics