Elastic Search 文档
ldy 2021-06-02
Elastic Search
Elastic Search简介

引言概述
- ES是一个使用Java语言井且基于Lucene编写的搜索引擎框架,他提供了分布式的全文搜索功能,提供了一个统一的基于 RESTful风格的WEB接口,官方客户端也对多种语言都提供了相应的API.
- Lucene: Lucene本身就是一个搜索引擎的底层.
- 分布式:ES主要是为了突出他的横向扩展能力。
- 全文检索:将一段词语进行分词,并且将分出的单个词语统一的放到一个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配的内容。(倒排索引)
- RESTful风格的WEB接口:操作ES很简单,只需要发送一个HTTP请求,井且根据请求方式的不同,携带参数的同,执行相应的功能。
- 应用广泛: Github. com,WK, Gold Man用ES每天维护将近10TB的数据。
ES对比Solr的应用场景
- Solr在查询死数据时,速度相对Es更快一些。但是数据如果是实时改变的,Solr的查询速度会降低很多,ES的查询的效率基本没有变化。
- Solr搭建集群需要以来zookeeper来支持。ES自身支持集群搭建。
- ES当前文档相对健全。
- ES对云计算和大数据支持更好。
倒排索引
- 将存放的数据,以一定的方式进行分词,并且将分词的内容存放到一个单独的分词库中。
- 当用户去查询数据时,会将用户的查询关键字进行分词,然后去分词库中匹配内容,最终得到数据的id标识。
- 根据id标识去存放数据的位置拉取到指定的数据
- 流程:先通过query将搜索词分词进行索引查询,再根据在分词器中检索到的id去数据池中fetch(获取)数据。