详解Elastic Search及架构

前言        

        如果我有三段文本,id分别为0、1、2, 具体如下,我要找到哪段文本里有关键词es,这时最容易想到的办法就是依次遍历文本,匹配es,最后将符合的文本id输出。

        0  i like  es

        1  i love es

        2  i use devops

        上述方法在数据量小的时候非常合适,但是我有几十万上百万以及更多的数据的时候,这样依次遍历 ,速度非常慢,不适合生产使用,通过关键词搜索这个生活中非常常见,抖音搜索想看的视频或博主,淘宝搜索想购买的东西等等,通过依次遍历明显是不可能的,这时es应运而生。

倒排索引

        ElasticSearch,是一个基于Lucene的搜索服务器,Lucene原理就是应用了倒排索引,这时我们还是看0、1、2三段文本,将i like es 切分为三部分,这个操作叫分词,分词后每部分为一个词项(term);记录词项和文本id的关系,如下:

i --- 0、1、2

like -- 0

es -- 0、1

love -- 1

use -- 2 

devops -- 2      

        在我们搜索es时,就可以搜到es这个词项,通过词项去匹配文档id为0和1,这时候又有一个问题,短短三句话就有这么多词项,如果换成几千几万句话,那词项也太多了 ,依次遍历

你可能感兴趣的:(elasticsearch,大数据,搜索引擎)