好久没写随笔了,今天来总结一下关于Elastic Search的三个基本的问题
首先说一下Elastic Search 到底是干什么用的呢?
1. 分布式的搜索引擎和数据分析引擎。
2.全文检索,结构化检索,数据分析。
3.对海量数据进行近实时的处理。
(说白了就是为了提升搜索效率)
1 ElasticSearch 中的倒排索引是什么?
倒排索引是搜索引擎的核心。
搜索引擎的主要目标就是在查找发生搜索条件的文档时提供快速搜索。
倒排索引也常被称为反向索引、置入档案或反向档案, 是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。
它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。
2 ElasticSearch 中的集群、节点、索引、文档、类型是什么?
集群
是一个或多个节点(服务器)的集合,它们共同保存您的整个数,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。
此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。
节点
是属于集群一部分的单个服务器。它存储数据并参与群集索引和搜索功能。
索引
就像关系数据库中的“数据库”。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。
MySQL => 数据库,ElasticSearch => 索引。
文档
类似于关系型数据库中的一行。不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型。
MySQL=>Databases=>Tables=>Columns/Rows ElasticSearch=>Indices=>Types=>具有属性的文档。
类型
是索引的逻辑类别/分区,其语义完全取决于用户。
3 ElasticSearch 查询方式有哪几种?
1.查询所有(match_all)
2.匹配查询(match)
会把查询条件进行分词,然后进行查询,多个词条之间默认关系是 OR。
3.词条查询(term)
用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些未分词的字符串。
4.布尔组合(bool)
各种其它查询通过 must (与)、 must_not (非)、 should (或) 的方式进行组合。
5.范围查询(range)
找出那些落在指定区间内的数字或者时间。
6.模糊查询(fuzzy)
fuzzy 查询是 term 查询的模糊等价。它允许用户搜索词条与实际词条的拼写出现偏差,但是偏差的编辑距离不得超过 2。