实习期间接触到了Elasticsearch,所以就系统的学习了一下 Elasticsearch。本文是自己在Elasticsearch学习过程
中的知识结构总结,这样对Elasticsearch有一个全貌的认识,具体的细节点和开发可参考本文找对应的资料。
一、什么的Elasticsearch?为什么要有它?,原理?
1)以往基本SQL的查询检索的不足
- 无法做到匹配查询
- like查询实现慢
2)倒排索引
这是搜索引擎打原理,网上很多资料介绍。
理解如下:
正常来说我们是在文档里面找某些关键词,而倒排索引就是通过关键词找出某些文档。,所以是反着来的。
比如:
1,文艺片电影 --->分词:文艺片|电影
2,好的文艺片 --->分词:好的|文艺片
3,最新上映文艺片 --->分词:最新上映|文艺片
分词后所有词打ids有4个,就是4个不同的词
建立倒排索引:
关键词 | 包含关键词的ids |
文艺片 | 1,2,3 |
电影 | 2, |
好的 | 2, |
这里的每个id对应着一篇包含该关键词打文档。
二、lucene,它就是一个jar包,里面包含了封装好的各种建立的倒排索引、以及搜索的代码,包括各种算法,用java开发时引入lucene jar即可,然后基于lucene的api去开发.利用lucene,就可以对已有打数据建立索引,然后进行搜索,(换句话说,lunece封装来搜索引擎打功能)。
Elasticsearch 封装了lucene,实现了分布式lucene!,提供更剪辑恩打api.
以下特性:高可用(副本机制)
高并发:(索引)
分布式:(多机)
关键词: 全文检索,结构化检索,数据分析,分布式搜索引擎
三、关键概念(可与传统数据库对比学习)
index
type
document
shard -->replica(副本),primary
四、安装使用
1,安装jdk
2, 下载解压Elasticsearch安装包
3,启动Elasticsearch : bin/elasticreaserch.bat
4, 检查是否启动成功。 http://localhost:9200/?pretty
5,修改集群名称:elasticsearch.yml
6,下载 kibana安装包,并启动
五、query DSL语法
get ,put等,即如何检索数据和如何建立索引等语法规则。
包括如何实现:1)全文检索,2)条件查询 ,3)分页查询 4)高亮搜索,5)聚合分析等。
六、Elasticsearch架构
1、分片机制
2、集群发现机制
3、shard负载均衡
4、ES扩容
5、master节点管理元数据
6、shard和replica机制
七、搜索引擎原理
timeout超时机制
Elasticserach并发控制等
未完待续........