zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    WPF中DataGrid控件的数据绑定与显示数组
    WPF中添加个简单的显示当前系统时间的示例
    WPF中往ComboBox里添加选项并指定默认选项
    WPF中Button的四种状态
    Web安全新变化 智能手机是下一个进攻点 狼人:
    卡巴斯基重拳组合 高效应对高考网站挂马 狼人:
    DNS规模故障追踪:由24岁站长引发的蝴蝶效应 狼人:
    追踪多省网络故障:域名解析瘫痪后的连锁反应 狼人:
    化解SaaS安全问题的三大措施 狼人:
    报道称黑客利用微软IIS安全漏洞 入侵大学服务器 狼人:
  • 原文地址:https://www.cnblogs.com/Jemb/p/11621826.html
Copyright © 2011-2022 走看看