Elasticsearch快速入门及使用
- 一.Elasticsearch是什么
- 二.基本概念
- 1.index (索引)
- 2. type (类型)
- 3.Document (文档)
- 三.为什么Elasticsearch可以从海量数据里快速检索出数据
- 四.Elasticsearch安装
- 1.解压
- 2.运行
- 3.显示以下内容就是启动成功1
- 4.Kibana可视化软件安装
- 五.入门(基本的操作)
- 1.查看es基本信息
- 2.索引一个文档(新增一条数据)
- 3.查询一个文档(查询一条数据)
- 4.更新一个文档(更新数据)
- 5.删除索引或文档(删除数据库或数据)
- 6.批量操作
一.Elasticsearch是什么
Elasticsearch 是一个免费且开放的分布式搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。
Elasticsearch 是全文搜索引擎的首选。它可以快速地储存、检索和分析海量数据。
二.基本概念
1.index (索引)
相当于mysql你创建的某个数据库。
2. type (类型)
相当于mysql你创建的某个表。
3.Document (文档)
相当于mysql表里的数据 (json格式)
三.为什么Elasticsearch可以从海量数据里快速检索出数据
快速检索归功于 Elasticsearch的倒排索引(存入数据会维护一张倒排索引表)
倒排索引的步骤
举例:按顺序存入 A =《大话东游》、B =《爱坤大话东游》、C =《大话连篇东游》、D = 《大话西游》
(1) 分词
①《大话东游》会被分成 《大话》和《东游》并属于A。
②《爱坤大话东游》会被分成 《爱坤》《大话》和《东游》并属于B。
③《大话连篇东游》会被分成 《大话》《连篇》和《东游》并属于C。
④《大话西游》会被分成 《大话》和《西游》并属于D。
倒排索引表如下:
词 | 记录 |
---|---|
《大话》 | A,B,C,D |
《东游》 | A,B,C |
《爱坤》 | B |
《连篇》 | C |
《西游》 | D |
(2) 检索
例如:检索《爱坤大话西游》
① 分词成 《爱坤》《大话》和《西游》
②去倒序索引表去查,包含这几项的记录。
③ 查到如下
词 | 记录 |
---|---|
《大话》 | A,B,C,D |
《爱坤》 | B |
《西游》 | D |
④ 然后计算相关性得分
D最符合,因为D分成两个单词都命中(2/2)。然后B分成三个单词命中两个(2/3)。然后A…,最后会根据相关性得分从高到低返回。
四.Elasticsearch安装
Elasticsearch官方安装文章
下载即用elasticsearch-7.3.1和kibana-7.3.1 提取码:0221
1.解压
2.运行
3.显示以下内容就是启动成功1
4.Kibana可视化软件安装
安装教程 注意:版本号要对应
五.入门(基本的操作)
Apifox-2.3.0自测工具安装包
注意:因为es把命令都封装成RestApi,所以我们直接发请求就行。
1.查看es基本信息
GET/_cat/nodes //查看所有的节点
GET/_cat/health //查看es健康情况
GET/_cat/master //查看所有的节点
GET/_cat/indices //查看所有索引(相当于查看所有数据库)
下面截图举例查询es健康情况:
2.索引一个文档(新增一条数据)
举例:http://localhost:9200/kunkun/ikun/2.5
含义:我们在kunkun索引下的ikun类型下保存id为2.5的数据。(相当于在kunkun数据库下的ikun表加一个id为2.5的数据,es里面存的是json数据)
异同点:
①POST和PUT请求新增如果重复发请求,如果存在就会更新。
②POST和PUT如果重复发请求更新时,不会对比原数据,版本号等会改变。
③POST请求不带id,会自动给你生成唯一id。PUT请求不带id会报错。
3.查询一个文档(查询一条数据)
4.更新一个文档(更新数据)
不适用: 大并发更新。
适用: 大并发查询偶尔更新。
注意:POST请求带 _update
关键字更新时会对比原来的数据,如果数据没有任何改变,不做任何操作,版本号等都不改变。
5.删除索引或文档(删除数据库或数据)
(1) 删除文档
(2) 删除索引
6.批量操作
注意:我们使用Kibana操作,批量操作时上一条命令失败不会影响下一条命令的操作。
(1) 简单测试
//给kunkun数据库下的ikun表导入两条数据
POST /kunkun/ikun/_bulk
{"index":{"_id":"1"}}
{"name":"chang"}
{"index":{"_id":"2"}}
{"name":"tiao"}
(2) 批量导入测试数据
es提供的测试数据 提取码:0221
好了入门到此结束。请期待后续的进阶文章。