Elasticsearch
1.全文检索
1.1 为什么要使用全文检索
在一个项目中,用户访问首页一般都会直接搜索自己想要的东西。
一般来说,商品的分类的数量相当多,如果想要正确的显示出用户想要的商品,那么一个强大的搜索系统是不可或缺的。
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
这里使用传统的数据库不够用,所以我们会使用全文搜索。
常见的全文检索技术有:lucene solr elasticsearch 等。
1.2 理解索引结构
倒排索引(Inverted Index)
该索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。Elasticsearch能够实现快速、高效的搜索功能,正是基于倒排索引原理。
倒排索引:根据属性值来确定记录该属性值的各记录的位置。
由于不是根据记录来确定属性值,而是由属性值来确定几率的位置,因而成为倒排索引。
1.3ES核心概念
节点 & 集群(Node & Cluster)
Elasticsearch 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个Elasticsearch实例。单个Elasticsearch实例称为一个节点(Node),一组节点构成一个集群(Cluster)。
Shard:分片
当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。
当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。
Replia:副本
为提高查询吞吐量或实现高可用性,可以使用分片副本。
副本是一个分片的精确复制,每个分