• 定期合并索引


    Es是基于lucene构建的搜索引擎;lucene查询的快是因为倒排索引;

    Es中经常会看到segments_q这样的文件,那么这个文件就是一个lucene的倒排索引;

    倒排索引是由**词典 (Term Dictionary)文档列表(Postings List)组成lucene会在词典上做一层前缀索引(Term Index),然后把前缀索引全部存储在堆内存中(heap)**;

    也可以使用restful查看当前的segment 大小:segment memory

    查看一个索引所有segment的memory占用情况:

    GET _cat/segments/.monitoring*?v&h=shard,segment,size,size.memory

    综上所述,segment越多,占用的内存(size.memory)也就越多

    所以要定期对索引进行合并优化;

    合并的过程:

    ES 会不断在后台运行任务,主动将这些零散的 segment 做数据归并,尽量让索引内只保有少量的,每个都比较大的,segment 文件。这个过程是有独立的线程来进行的,并不影响新 segment 的产生。

    归并过程中(尚未完成的较大的 segment 是被排除在检索可见范围之外的)

    当归并完成,较大的这个 segment 刷到磁盘后,commit 文件做出相应变更,删除之前几个小 segment,改成新的大 segment。等检索请求都从小 segment 转到大 segment 上以后,删除没用的小 segment。这时候,索引里 segment 数量就下降了

    索引的合并策略

    通过命令进行索引的合并:

    curl -XPOST http://hadoop01:9200/logstash/_forcemerge?max_num_segments=1

    【注意】当索引的数量不是很大的情况下,max_num_segment可以1;

    数据量很大,如果max_num_segments很小,会导致segment很大,合并segment会非常的耗时,如果用户这期间来检索数据,是检索不到这个合并期间的segment的,有可能会造成数据检索不到的现象

     

  • 相关阅读:
    限制TextBox框 所输入的字符数
    ASP.NET中使用AJAX后,Session丢失异常的自定义处理。
    用div替代模态窗口
    自动更新程序的制作方法
    常用SQL语句集合
    GridView无数据显示表头类
    密码强度
    GridView绑定技巧终结者
    js验证输入是否为手机号码或电话号码
    Js事件列表
  • 原文地址:https://www.cnblogs.com/niutao/p/10909362.html
Copyright © 2020-2023  润新知