今天。。
Elasticsearch认知
ES 是什么
Elasticsearch简称ES,是一个开源的实时分布式搜索和分析引擎。它具有快速、可扩展、强大的全文搜索功能,可以用于存储、搜索和分析大规模的数据。ES可以处理大量的数据并提供实时的搜索结果,适用于各种应用场景,包括日志分析、全文搜索、数据可视化等。它使用分布式架构来实现高可用性和容错性,并提供简单的RESTful API和丰富的查询语法来进行数据的索引和搜索。
按照ElasticSearch官网的定义,Elasticsearch是个分布式、RESTful风格的搜索和数据分析引擎
关于搜索首先,需要弄明白下面几个问题
什么是搜索?
提到搜索,人们会立刻联想到在百度,谷歌上熟入关键词获取相关的内容的场景。但搜索不等于百度,大部分APP支持的站内搜索更加大行其道。
为什么数据库不适合处理搜索?
数据库是储存和查询数据的利器,那么数据库是否适合做搜索呢?答案是不合适。第一个原因是,当数据库存储了大量数据后,查询效率大幅降低。
另外有些搜索场景,数据库也是不支持的,例如在下表中,我们试图通过“中国足球”这个关键词搜索数据,数据库是无法查询到相应内容的。
什么是全文检索和Lucene?
倒排索引
什么是倒排索引?
倒排索引也叫反向索引,我们通常理解的索引是通过key寻找value,与之相反,倒排索引是通过value寻找key,故而被称作反向索引。
说明
假如现在有三份数据文档,内容分别是
为了创建索引,ES引擎通过分词器将每个文档的内容拆成单独的词(称之为词条,或term)再将这些词条创建成不含重复词条的排序列表,然后列出每个词条出现在哪个文档
Doc 1:Java is the best programming language
Doc 2:PHP is the best programming language
Doc 3:Javascript is the best programming language
为了创建索引,ES引擎通过分词器将每个文档的内容拆成单独的词(称之为词条,或term)再将这些词条创建成不含重复词条的排序列表,然后列出每个词条出现在哪个文档
核心术语
词条(term):索引里面最小的存储和查询单元,对于英文来说是一个词,对于中文来说一般指分词后的一个词。
词典(Term Dictionary):也叫字典,是词条的组合。搜索引擎的通常索引单位是单词,单词词典是文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向倒排所有的指针。
倒排表(Postlist):一个文档通常由多个词组成,倒排表记录的是某个词在哪些文档里出现过及出现的位置。每个记录称为一个倒排项(Posting),倒排表记录的不单单是文档编号,还记录了词频等信息。
倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
词典和倒排表是 Lucene这种很重要的两种数据结构,是实现快速检索的重要基石。词典和倒排文件是分两部分存储的,词典在内存中而倒排文件存储在磁盘。
Lucene
Lucene,直白地说,它就是一个jar包,封装好了各种建立倒排索引、匹配索引进行搜索的各种算法。我们可以引入Lucene,基于它的API进行开发。
ElasticSearch就在Lucene的基础上实现的,对Lucene进行了良好的封装,简化开发,并提供了很多高级功能。
ElasticSearch 为快速检索和分析大数据而生目前已形成丰富的生态。
ES基本概念
Elasticsearch 能够存储和查询数据,将其和最具知名度的数据库-Mysql进行一番对比,两者之间可以通过下表做一个并不非常严谨的类比,主要是为了方便理解。
要了解 Elasticsearch,首先要先了解下面的几个专有名词:
索引(Index)、类型(Type)、文档(Document)、映射(mapping)。
Index:索引,相当于关系数据库中的database概念,是一类数据的集合,是一个逻辑概念。
Type:类型,相当于数据库中的table概念,在6.0版本之前,一个Index中可以有多个type,7.0版本后彻底废弃多type,每个索引只能有一个type,即“_doc”。这个概念就不用太关注了。
Document:文档,存储在ES中的主要实体叫文档,可以理解为关系型数据库中表的一行数据记录。每个文档由多个字段(field)组成。区别于关系型数据库的是,ES是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯标识。
Field:字段,存在于文档中,字段是包含数据的键值对,可以理解为Mysql一行数据的其中一列。
Mapping:映射,是对索引库中的索引字段及其数据类型进行定义,类似于关系型数据库中的表结构。ES默认动态创建索引和索引类型的Mapping。
安装Elasticsearch
Windows安装:官网 Elasticsearch:官方分布式搜索和分析引擎 | Elastic
解压后双击启动bin文件夹下的elasticsearch.bat文件
这时通过浏览器打开可以看到如下内容,则启动成功
处理索引
1.新增索引
在Apipost中向 ES 服务器发 PUT 请求:localhost:9200/easyindex
2.查看所有索引
向ES 服务器发 GET 请求:http://127.0.0.1:9200/_cat/indices?v
请求路径中的 cat 表示查看的意思,indices表示索引
所以整体含义就是查看当前 ES服务器中的所有索引
3.查看指定索引
向 ES 服务器发 GET 请求:http://localhost:9200/easyindex
4.删除索引
向 ES 服务器发 DELETE 请求:http://localhost:9200/easyindex