IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 我的ElasticSearch 7.x 学习笔记——HTTP -> 正文阅读

[大数据]我的ElasticSearch 7.x 学习笔记——HTTP

本笔记基于 ElasticSearch 7.x

ElasticSearch(以下简称ES)中的数据类型

ES是一个面向文档的数据库,在当中有Index(索引)、Type(类型)、Documents(文档)、Fields(列)。如果将这些属性和关系型数据库Mysql做类比,那么我们可以这样简单的理解:
Index(索引) --> Database(数据库)
Type(类型) --> Table(表)
Documents(文档) --> Row(行)
Fields(字段) --> Column(列)

其中Type(类型)在ES 7.x 中已经被删除了,因此在本文中不会涉及到Type

在Liunx上使用docker搭建es

  docker pull elasticsearch:7.13.3
  docker run -d -e ES_JAVA_POTS="-Xms256m -Xmx256m" \
    -e "discovery.type=single-node" \
    -p 9200:9200 \
    -p 9300:9300 \
    --name=my_es \
    elasticsearch:7.13.3

ES 7.x 基础操作

在这里我们使用postman工具来对es服务器发送请求

1. 创建索引

在es中创建索引,如同在mysql中创建数据库。
使用postman向es服务器发送PUT请求

http://你es服务器的ip地址:9200/store

store是你要创建的索引,可以更替为你自己想要创建的索引名称
如果你创建成功,es应该会返回这样的数据给你
es服务器成功创建索引

2. 查询索引

这个时候,我们只需要发送GET请求就行了,请求的路径不变,一样是

http://你es服务器的ip地址:9200/store

这个时候es服务器就会将store索引的信息返回给你
es服务器返回索引信息
当然了,如果你在es服务器中查询没有创建过的索引,es服务器就会报错
es服务器找不到索引
如果我们要一次性查询所有的索引,一样只要需要向发送GET请求就行了,只是请求的地址不同,而且要携带参数v而已

http://你es服务器的ip地址:9200/_cat/indices?v

es服务器返回所有索引信息

3. 删除索引

删除索引的操作也很简单,只要发送DELETE请求就可以了

http://你es服务器的ip地址:9200/store

索引删除成功
这样我们就成功的将store索引删除了,es服务器也会返回删除成功的信息

4. 创建文档

我们前面有说到es中的文档可以类比为mysql中的表,但是文档和表的使用却不太一样。在mysql中,要往表内添加数据,你首先要设计好表的结构,而在es 7.x 中,你只需要直接添加数据就可以了,添加数据就等同于创建文档。
向es服务器发送POST请求,如果你之前把索引删除了,记得将索引重新创建回来

 http://你es服务器的ip地址:9200/store/_doc

同时我们需要在body中携带我们要添加的数据,要添加的数据得是JSON格式的,例如我们添加这样一组数据

{
	"titel": "iphone 11 pro max",
	"category": "apple"
}

在添加成功后,es服务器就会返回信息给你
创建成功

6. 查询文档数据

在刚刚,我们添加数据的时候,es服务器返回的json字符串中,有一个属性 “_id” ,我们可以通过这个属性的值来查找相对应的数据

主键查询

这里要通过GET请求的方式来查找

http://你es服务器的ip地址:9200/store/_doc/(_id属性的值)

在这里插入图片描述
如果你查询不存在的id,es服务器也会返回消息,告诉你的数据不存在。这里由于篇幅限制就不做演示了。

全部查询

一样还是发送GET请求,只不过请求地址有所不同

http://你es服务器的ip地址:9200/store/_search

在这里插入图片描述
es服务器就会返回当前索引内的所有数据

7. 修改文档数据

全量修改

这里我们要使用到PUT请求

http://你es服务器的ip地址:9200/store/_doc/(_id对应的值)

body中携带你要更新的数据,发送请求后,再进行查询,你就会发现,原本的数据已经变成了你更新后的数据,不过这种方式的修改,新数据会替换掉所有的旧数据。

局部修改

这里我们要使用POST请求

http://你es服务器的ip地址:9200/store/_update/(_id对应的值)

同时body中携带你要修改的参数,例如我只要修改这个数据的"title"属性,那么可以写成下面这样

{
	"doc":{
		"title": 新的数据
	}
}

这样就只会对数据的title属性的值进行变更,而不会替换掉其他数据

8. 删除文档数据

删除文档数据也十分简单,发送DELETE请求即可

http://你es服务器的ip地址:9200/store/_doc/(_id对应的值)

删除文档数据
在删除成功后,es服务器一样会返回信息,如果要删除的id值所对应的数据不存在,es服务器则会返回失败信息。提示你数据不存在。

9. 条件查询

这里我们要使用到GET请求

http://你es服务器的ip地址:9200/store/_search?q=brand:apple

这里的"brand"可以替换为你要查询的属性,而"apple"则是属性的值
如果要查询的条件较多的话,我们可以在GET请求的body中携带JSON格式的参数,例如以下这样

{
	"query":{
		"match":{
			"brand":"apple"
		}
	}
}

10. 多条件查询

多条件查询一样使用GET请求,只是body请求体中要写得比较麻烦
请求地址

http://你es服务器的ip地址:9200/store/_search

body数据示范

{
	"query":{
		"bool":{
			"should":{
				"match":{
					"brand":"apple"
				}
				"match":{
					"brand":"华为"
				}
			}
		}	
	}
}

其中"match"中的数据表示查询条件,"should"则表示或的意思,即"brand"为"apple"或"华为"的数据都会被查询到。当然我们也可以用"must"表示并,例如下面这样。

{
	"query":{
		"bool":{
			"must":{
				"match":{
					"brand":"apple"
				}
				"match":{
					"price": 7000
				}
			}
		}	
	}
}

这样就是代表要查询"brand"为"apple"且"price"为7000的数据了

11. 分页查询

这里使用GET请求,请求地址同上

http://你es服务器的ip地址:9200/store/_search

我们只需要在GET请求的body中携带分页信息就行
其中,from表示数据的起始位置,size表示要显示的数据个数,_source表示要显示的数据,sort表示排序条件例如

{
	"query":{
		"match":{
			"brand":"apple"
		}
		"from":0,
		"size":10,
		"_source":["brand"]
		"sort":{
			"price":{
				"order":"desc"
			}
		}
	}
}

这样就是告诉es服务器,我们的分页查询条件,即从第0个数据开始,展示10个数据,只显示brand这一列的数据,排序根据price属性,进行降序排序。

12. 范围查询

一样使用GET请求,请求地址

http://你es服务器的ip地址:9200/store/_search

同时我们在GET请求的body中携带JSON数据,来表示查询条件,例如以下这样

{
	"query":{
		"bool":{
			"filter":{
				"range":{
					"price":{
						"gt":3000
						"lt":5000
					}
				}
			}
		}
	}
}

"price"是我们要进行范围查询的属性,其中"gt"代表大于,"lt"代表小于,"gte"代表大于或等于,"lte"代表小于或等于

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-07-27 16:17:12  更:2021-07-27 16:20:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 20:57:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码