1.全文检索
应用程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。
当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。
ElasticSearch全文检索的原理是倒排索引。
2.倒排索引原理
使用倒排索引,需要查询和给定关键字有关的东西时,就不用去库里面逐个遍历,而是获得关键字所建立的所有相关索引,将索引对应的所有数据拿出来,效率提高很多
如下图,每种商品描述可以理解为一行数据,将词与对应行作为倒排索引,查询生化机,时,遍历到”生化”这个词,返回”生化”对应的数据行,然后就结束了,而不是去商品描述行里一个个去遍历、判断字符串
3.核心成份
通过类比数据库来理解
3.1 Cluster(集群)
集群包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常
3.2 Node(节点)
集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。
3.3 Index(索引<->数据库)
索引包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
3.4 Type(类型<->表)
每个索引里都可以有一个或多个type,type是inde