• ElasticSearch理解


    ElasticSearch设计的理念就是分布式搜索引擎。

    ES与Solr对比?

    Solr在数据量不大的传统搜索应用表现要好于Elasticsearch,这体现在使用简易度上,功能上完整度上,还有少量数据搜索效率上。但Solr毕竟是很久之前的产品,似乎不太适应当前大数据发展的趋势,而Elasticsearch天生支持大数据,并且很多有大数据需求的互联网公司,实际生产环境测试,将搜索服务器从Solr转到Elasticsearch以后的平均查询速度有了50倍的提升。
    数据量少的传统搜索应用可以使用Solr,新兴的实时搜索大数据应用选择Elasticsearch。

     

     ES与传统数据库对比?

      

     倒排索引跟普通索引的区别?

    普通索引:关键字去找文档

    倒排索引:文档去找关键字, 倒排索引是以文档本身内容进行索引,会将所有的原信息整理成一个文档,对这些元信息进行分词,并且对文档进行一个标记。比如当人们搜索hello 关键字的时候,就可以立马定位到 hello 出现在文档1 中,还可以知道在文档中的位置

    为什么叫es是准实时的?

    准实时。默认是每隔1秒refresh一次的,所以es是准实时的,因为写入的数据1秒之后才能被看到。我们也可以调用es api进行refresh,

    手动将buffer中的数据刷入os cache中,让数据立马就可以被搜索到。

     

     

    ES的数据持久性保证?

    translog先写入os cache的,默认每隔5秒刷一次到磁盘中去,可能有5秒的数据会仅仅停留在buffer或者translog文件的os cache中,如果此时机器挂了,会丢失5秒钟的数据。一般使用默认配置,如果使用近实时可能会形象ES的性能。

     

     

    ES删除流程?

    删除操作,commit的时候会生成一个.del文件,里面将某个doc标识为deleted状态,那么搜索的时候根据.del文件就知道这个doc被删除了

     

     

    Segment File过多会进行什么操作?

    buffer每次refresh一次,每秒就会产生一个segment file,segment file会越来越多,到一定程度,此时会定期执行merge,merge时,会将多个segment file合并成一个。同时这里会将标识为deleted的doc物理删除掉,然后将新的segment file写入磁盘,这里会写一个commit point,标识所有新的segment file,然后打开segment file供搜索使用,同时删除旧的segment file。

     

     

    es里的写流程,有4个底层的核心概念

    refresh:buffer快满了,或者到一定时间,就会将buffer数据refresh到一个新的segment file中,但是此时数据不是直接进入segment file的磁盘文件的,而是先进入os cache的。

    translog数据写入ES的时候,不仅写入buff,同时写入到tranlog文件,并且没5秒钟进行一次持久化

    flush:默认每隔30分钟会自动执行一次commit,但是如果translog过大,也会触发commit。

         1、写commit point;

         2、将os cache数据fsync强刷到磁盘上去;

         3、清空translog日志文件

    merge:buffer每次refresh一次,每秒就会产生一个segment file,segment file会越来越多,到一定程度,此时会定期执行merge,merge时,会将多个segment file合并成一个。

     

    ES插入数据,删除,查询数据流程图

    ES优化方案:

    1.File System Cache:es的搜索引擎严重依赖于底层的File System Cache,如果给File System Cache更多的内存,尽量让内存可以容纳所有的Index Segment File索引数据文件,那么你搜索的时候就基本都是走内存的,性能会非常高。

    2.根据要搜索的字段才存到ES中,尽量避免将所有字段都存到ES中,节约ES的内存。

    3.可以使用内存预热方案,用个定时任务之类的工具,将访问频率高的,先查询一遍弄到ES内存中。

    整理来自:

    https://juejin.im/post/5ce660aae51d454d56535763

     

  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/Jemb/p/11621826.html
Copyright © 2020-2023  润新知