一。ES 的好处

1. 分词功能

2. 对于搜索出来的结果,可以高亮某些词

3. 快速查询

二。ES 特点

1. java 开发

2. 基于Lucene(是一个架构,全文检索引擎,类似web 中的servlet,es 就像spring)

3. 基于Restful web 接口

4. 增量数据实时搜索比较快

三。ES 的几个概念

一。倒排索引

对于正排索引,是根据key 去找value。db 里存的都是完整的内容。

对于倒排索引,把数据导入es 中,然后进行搜索。导入的过程中,会对数据进行分词,查询的时候,通过数据的分词作为key,查找到对应的数据。

即正排索引就是根据key 找value,但是倒排索引就是根据value 去找key,然后找到对应的value。

二。与关系型数据库的对比

1. 

database(数据库) - index(索引库)

table(表) - type(类型)(es7 中已经作废)

row(行) - document(文档)

column(列) - field(字段)

2. 

一个es 集群包含多个索引(数据库),每个索引包含很多类型(es7 中已经作废),类型中包含很多文档(行),每个文档包含很多字段(列)。

3. 

传统db 是通过b+ tree 来加速检索。es 使用倒排索引(一种数据结构)来达到相同目的。

4. 

倒排索引源于实际中,需要根据属性值来查找记录的需求。

这种索引表中每一项都包括一个属性值和具有该属性值的各记录的地址。

由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。

5. 

作废type 的原因是为了提高搜索效率

举例来说,查找city = shanghai,对于关系型数据库,要到各个表里去查询,然后进行汇总。

对于es 来说,就是要到各个type(类型)中去查询,然后进行汇总。

认为这样比较麻烦,所以只允许有一张表。有一张表就不会出现重复字段了,这场查出来就比较方便了。就是不想在多个type 中查找这个field 了。