Elasticsearch 入门

Elasticsearch 入门

(注:本篇文章基于Elasticsearch7.7.0版本,由于版本的差异性造成的内容不一致我会尽量在文中标出,但是)

Elasticsearch是什么

    Elasticsearch是基于Lucene扩展的全文搜索引擎,当我们有对大数据量的处理和搜索时,全文搜索引擎是最佳的选择,同时他提供了高扩展性、高可用性、RestFul风格的API和友好的分布式部署配置,在此我们不予详述。

    速度提升:倒排索引

    我们日常使用的数据库索引是数据库一种编排数据(逻辑上)从而加快查询的手段,我们暂且将这种索引方式称为正排索引,他通过对待搜索字符寻址从而找到对应的数据。但是这种索引方式对于模糊匹配会出现"断档"现象(模糊符号后的片段无法走索引查找),并且对于海量数据无论在存储上还是在查找上都略显吃力,于是在Elasticsearch中引入了倒排索引来加快查询速度。

    倒排索引存入的数据键并不是数据本身,而是经过对数据分析后提取到的keyword,例如:“我爱中国”会被分解为“我”、“爱”、“中国”(期间可能会丢弃部分无语意的助词或是对词汇进行转换,既为了压缩空间,也能更好的模糊匹配,见后文)而在索引文件中会记录下这些关键词出现的位置(出现在哪条数据以及可能记录出现在数据中的次数和位置),当我们进行搜索时,也会用同样的手段拆分搜索词,然后找寻对应的索引。当然,这只是对倒排索引的道理梗概,实际处理的逻辑和结构都比这里的描述要复杂得多。

    相关概念

  1. 索引词 term是一个进行精确搜索的词汇,区分大小写。

  2. 文本 text:es存储的原结构,文本会被分解成一个个的索引词存在es的索引库中。

  3. 文档 document:es中存储的JSON字符串,是数据的内容体现,每个文档都是一个具体的对象,相当于数据表中的一行数据。

  4. 索引 index:结构相同的文档集合,有点类似于数据库的表。

  5. 类型 type:同个索引下的多个类型,相当于索引的分区,这个相比数据表更为细化。

  6. 映射 mapping:每个索引对应着一个映射,定义了索引对应的结构,相当于数据库的表结构。

  7. 主键 id:同数据库的主键,文档的唯一标识。

  8. 字段 field:一个文档包含多个字段,相当于数据库的字段,但是es中的字段可以很复杂(比如可以是一个对象)。

    es的数据类型

    es中的数据类型有很多,还有很多领域专用的数据类型,在此只列举除了常用的类型。

Elasticsearch的REST API使用指南

    其实这部分相当于把API文档搬过来了,baseUrl若使用本地的es便是localhost:9200。在url中,使用_后接关键词从而与索引、类名区分开来。

基础参数与基本约定

        es API提供了一些通用的基础参数:

        大体使用rest api风格接口进行通信,

综述:状态查询

GET    /_cat                      列表展示

       展示集群监控相关的状态接口列表,通过接口可以查询相关的es状态,比如:

GET    /_cat/indices?v            查看索引状态

        可以查看当前es索引的状态,加上v后展示table的表头,结果如下(index是索引名,这里省略掉了):

        其中,pri表示主分片数量,rep表示副分片数量,docs.count表示当前索引的文档总数量,docs.deleted表示删除文档数(个人比较倾向于表示待删除的文档数,因为实际已经删除的文档是不会记录在里面的,该值应该是表示仍在占用存储空间但是实际不会用到的文档数量,没有覆盖和删除操作后期数字会渐渐变小),store.size表示总分片存储空间大小,相应地,pri.store.size表示主分片存储空间大小。

索引相关

PUT       /{indexname}                 创建一个索引

    在请求体中,可以直接传入索引的setting(这个在后文会说),

DELETE    /{indexname}                 删除一个索引

    

GET       /{indexname}                 查询索引信息

    展示索引的基本信息,包括setting、mapping等。

//TODO

参考书籍:《Elasticsearch技术解析与实战》


2019-08-29鱼鱼

{{blog.title}}

创建于 {{blog.createTimeStr}}   created  by  {{blog.author}} {{tag}}
最后修改于 {{blog.timelineStr}}
修改文档