初识分布式搜索引擎--ElasticSearch

这段时间项目上在研究ElasticSearch,所以记录一下学习心得,如有不对或者有需要补充的地方,麻烦各位小伙伴积极指出!

ES核心术语

index索引         数据库的表

document         数据库的表中对应的数据行

field                  数据库中字段列

ES的优势

mapping映射              对应的表结构定义

近实时NRT                  Near Real Time   好比在github上建了一个仓库,基本耗时1S,最快可以1S内可以被搜索到

节点node                    可以使用分布式集群(相当于一台服务器就是一个节点,独立也可以使用)

shard replica               数据分片与备份(分片【shard】:把索引库拆分为多份,分布在不同的节点上,比如有2个节点,这2个节点的所有数据可以组成一个完整的索引库,分别存在这2个节点,目的是水平扩展,可以有效的提高吞吐量。备份【replica】每个节点的备份)在每个分片上会有一个ES的进程,会有一定的计算能力,在分片存在的同时,ES会对相应的分片进行备份,假如此时还是2个节点,当其中一个节点挂了以后,会立即把此节点备份的数据挂载到另外一个节点上。分片【shard】也可以被称为primary shard(主分片),备份【replica】也可以被称为replica shard (备份),如果后期数据达到6T的数据量的话,需要配置6个shard分片

ES处理数据的一个方式       倒排索引

比如我下面的例子:  以下数据其实就是对应数据中的一张表的3行数据,右图是ES中的排序方式

文档ids表示单词在表中存在的数据行(表示数据在左边的第几行)简单来说就是根据key查找value这个属于正排索引

id                      name                                  单词            文档ids             词频TF;位置POS

1                    肯德基真好吃                         肯德基          1,2,3           1:1:<1>,2:1:<1>,3:1:<1>

2                    肯德基是快餐                          真                     1                 1:1:<3>

3                    肯德基好吃的不行                   好吃                  3                 3:1:<3>

                                                                      是                      2                 2:1:<3>

                                                                       的                      3                 3:1:<5>

                                                                       快餐                   2                 2:1:<4>

                                                                       不行                   3                 3:1:<6>

以下是根据右上图的文档ids,我们可以得出以下数据:倒排索引是根据value来查找对应的key,

我们以1:1:<1>为例,第一个1是表示单词所在的行Id,第二个1表示在单词所在行Id出现的次数,<1>表示单词所在行Id的位置,索引是从0开始的。出现的频率越高,越容易被用户搜索的到。

你可能感兴趣的:(初识分布式搜索引擎--ElasticSearch)