Loading

ElasticSearch 基本概念和基础操作

安装

  1. ElasticSearch -> 参考官方文档,下载压缩包解压即可使用
  2. ElasticSearch head → 相当于一个可视化工具,用来查看数据 -> 可以直接安装浏览器插件
  3. kibana (查询工具) -> 参考官方文档,下载压缩包解压即可使用
  4. ik 分词器(中文分词器) → GitHub 下载后直接下载放入 plugins 目录 → 在config目录下可以配置自己的词典

核心概念

关系型数据库 ElasticSearch
数据库 database 索引 index
表 table 类型 type
行 row 文档 document
字段 columns 字段 fields

集群

集群(cluster) 是一个或多个节点的集合。

节点

节点(node) 是一个 elasticsearch 的运行实例,也就是一个进程,多个节点组成集群,节点存储数据,并参与集群的索引、搜索和分析功能。

索引

索引(index) 是具有某种相似特性的文档集合。(我感觉索引更像是 MySQL 中的表的概念)特别是7.0版本取消了类型的概念,如果把文档看做一条数据,索引是拥有多个相同结构文档的集合,也就是表。

文档

文档(document) 是可以被索引的基本信息单元。JSON文档。

分片

分片是索引的水平拆分。当一个索引的数据量太大,可以把一个索引拆分成多个分片,每个分片本身都是具有完整功能的“独立索引”,可以分布在集群中的任何节点上。每个分片都是一个完整的 Lucene 索引。

一般在创建索引的时候就要预判分片数量并创建,分片的数量理论上不可变更,唯一的办法重建索引。

副本

每个分片都可以有一个或多个备份,分片的副本会部署在不同节点上,在分片或节点发生故障时提供高可用性。

副本也可以用于搜索,可以提高搜索性能和水平扩展吞吐量。类似于主从分离,一主多从。

分片和副本的区别和联系

  1. 本质上都是完整的 Lucenes 索引
  2. 假设一个索引定义了3个分片、2个副本,那么总共就有9个分片,其中3个主分片,每个分片有2个副本。主分片就是建立索引时首先建立的分片,或者说当主分片失效时会重新选择出一个副本作为主分片
  3. 当索引(插入数据)时,数据会首先到达主分片,然后再把请求分发到其他副本
  4. 当搜索(查询数据)时,主分片和副本都可以接受请求、搜索和分析数据,二者没有区别

基础操作

关于索引的基本操作

创建索引并添加一个数据(这种创建方式貌似已经过时,type将在7.x版本被废弃)

PUT /索引名/~类型名~/文档id
{请求体}

/Users/chaohangz/Documents/MyNotebook/image/Untitled.png

完成了自动增加索引!数据也成功的添加了,这就是我们在初期可以把es当做数据库学习的原因!

/Users/chaohangz/Documents/MyNotebook/image/Untitled1.png

创建索引,指定字段类型

PUT /索引名
{
  "mappings": {
    "properties": {
			"字段名": {
        "type": "字段类型"
      },
      "name": {
        "type": "text"
      },
      "age": {
        "type": "long"
      },
      "birthday": {
        "type": "date"
      }
    }
  }
}

/Users/chaohangz/Documents/MyNotebook/image/Untitled2.png

查询操作

通过get请求获取索引具体的信息

/Users/chaohangz/Documents/MyNotebook/image/Untitled3.png

创建时插入一条数据,不指定字段类型,es会自动给字段分配类型

_doc 是在type被废弃后的默认type

/Users/chaohangz/Documents/MyNotebook/image/Untitled4.png

扩展命令

通过 GET /_cat 可以获得es很多信息

/Users/chaohangz/Documents/MyNotebook/image/Untitled6.png

修改索引

有多种方式可选

/Users/chaohangz/Documents/MyNotebook/image/Untitled7.png

删除索引和文档

/Users/chaohangz/Documents/MyNotebook/image/Untitled8.png

关于文档的基本操作

简单命令

添加数据

/Users/chaohangz/Documents/MyNotebook/image/Untitled9.png

查询数据

/Users/chaohangz/Documents/MyNotebook/image/Untitled10.png

/Users/chaohangz/Documents/MyNotebook/image/Untitled11.png

复杂查询

查询出来的hits对象包含哪些东西

过滤结果,相当于 select name, desc .......

Untitled

排序

Untitled

分页查询

布尔查询

must (相当于 and) 所有条件都要匹配

image-20210503082409058

should (相当于 or) 部分条件匹配

image-20210503082942016

must not (相当于 not)

image-20210503083235155

过滤结果集和进行范围查询

gt 大于 gte 大于等于 lt 小于 lte 小于等于

image-20210503083619016

匹配多个条件,匹配条件越多,分值越高

image-20210503084341055

keyword 和 text, 精确匹配和模糊匹配,keyword 类型的字段不会被分词器解析

image-20210503094122081

term 精确查询,不使用分词器解析

match 使用分词器解析

image-20210503095116507

高亮显示

image-20210503095634716

自定义高亮标签

image-20210503100027466

<全文完>

posted @ 2021-05-04 20:23  超超不会飞  阅读(72)  评论(0编辑  收藏  举报