我的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"代表小于或等于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值