由于最近工作的需要,需要进行大量的数据检索和日志分析,用到Elasticsearch(以下简称ES)全文检索工具,下面就把我在使用过程中的一些问题和大家分享一下吧。如有什么写的不对的地方,希望得到大家的批评和指正,谢谢!
一、什么是ES?
简单来说,ES就是一个基于Lucene(其实就是一个Jar包),基于RESTful web接口,支持分布式多用户能力的全文搜索引擎。那么什么是全文检索呢?举个栗子,假如在一个数据库里面有1个亿的数据量,你需要从中搜索你所需要的某几条数据,那么通常做法就是你需要扫描一亿次才能匹配到你所需要的数据,也就是说每次你都需要进行扫描所有的数据,那效率可想而知了。但是基于lucene的搜索方式就不同,首先他会把你搜索的关键词,建立倒排索引 ,假设一个亿的数据量拆分之后,或许只有5千万个词组,那么在倒排索引中就会有5千万行,也就是说,当你在检索数据时候,或许你在执行搜索的时候只需要搜索一次或者5千万次,就能把所需要的数据搜索出来,而这一过程也就可称为全文检索。
二、为什么要用ES?
举个栗子:做开发的都知道,一般数据我们都会存储在数据库里面,假如说你存入的某个字段,是一个文本类型的,在你执行搜索的时候,数据库他是不会帮你进行拆分的,你必须的搜什么就去匹配什么,比如你搜索变”形金”,你就不可能搜索出”变形金刚”,,我们引入ES的话,进过词组的拆分后,搜索将会更接近于自己所期望的结果。