elastic search(一) 概述

1.1 es引言

举个例子,列如淘宝,搜索“壳手机”,注意我搜的是“壳手机”,不是“手机壳”

elastic search(一) 概述

假设使用数据库,select * from commodity where name like ”%壳手机%“

这里有两个问题:

1、like“%壳手机%” , %%关键词全表检索,试想遍历类似淘宝海量数据,效率感人

2、用户很有可能想要的是 手机壳,但是输入了壳手机,用like搜索是不会匹配到“手机壳”d的结果的

当然真实的淘宝检索远比上面描述的要复杂,问题也更多。es的出现,完美的解决了检索的问题。

1.2 es介绍

Elastic Search , 简称ES,是一个基于Lucene,使用java语言编写的搜索引擎框架。ES支持分布式全文搜索,提供了restful风格的操作接口,对多种开发语言提供了API。

Lucene,apache顶级项目,官网lucene.apache.org,solr也是基于lucene的搜索实现。

分布式,突出其横向扩展能力。

全文检索,倒排索引,将文档分词存储,对关键词分词后搜索匹配。

应用广泛,不胜枚举,广泛用于搜索场景、大数据分析场景。

1.3 es和solr的区别

1、es对于实时动态数据的搜索支持优于solr,solr对于不变数据的分析性能更优

2、如果需要搭建集群,solr需要依赖zookeeper,es本身支持集群

3、solr国内的社区文档完善程度不及es,es文档十分健全

4、es不止于搜索,对云计算、大数据同样支持特别好

1.4 倒排索引

假设有4条数据,id,内容

id

内容

1

手机壳

2

小米手机壳

3

苹果手机壳

4

我有小米手机

倒排索引,分词库

分词

id

手机壳

1,2,3

手机

1,2,3,4

1,2,3

小米

2,4

苹果

3

4

4

搜索实现:

1、将存放的数据,以必定的规则进行分词,并将分词结果保存到分词库

2、用户查询时,现将用户查询的关键词进行分词

3、将查询关键词分词结果去分词库中匹配,拿到匹配结果

4、根据匹配结果去数据存放位置取数据

1.5 kibana

Kibana是用于Elasticsearch的源可用数据可视化仪表板软件,常用菜单有:

1、devTools:左侧倒数第三,小扳手,编写restful的操作请求

2、management:倒数第一,查看索引信息

elastic search(一) 概述

1.6 ik分词器

elastic search(一) 概述

默认分词,调用standard分词器

elastic search(一) 概述

ik分词,调用ik_smart分词器

elastic search(一) 概述

ik分词支持两种分词模式

  • ik_max_word: 会将文本做最细粒度的拆分,会穷尽各种可能的组合
  • ik_smart: 会做最粗粒度的拆

1.7 es的结构

索引(index)、分片、备份

  • es可以创建多个索引
  • 每个索引默认5个分片
  • 每个分片至少有1个备份分片,集群中,es会自动把备份放到不同的机器
  • 备份分片一般不参与检索,在检索压力大的时候才会参与检索数据

类型(type):7.*版本后,一个索引只支持一个类型(1个类型≈数据库中的1个表)

文档(doc):一个类型下,可以有多个文档(1个文档≈数据库表的一行记录)

属性(field):一个文档中,可以包含多个属性(1个属性≈表中一行记录的一列)

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共1条

请登录后发表评论