Elasticsearch 基本操作(上)

本文详细介绍了RESTful架构风格及其在Web服务中的应用,强调了无状态请求和资源概念。接着,讲解了如何使用Postman客户端安装和调试Elasticsearch,包括创建索引、查看索引、数据格式、HTTP操作如CRUD等。最后,通过实例展示了Elasticsearch中如何操作文档,包括创建、查看、修改、删除以及条件删除文档。
摘要由CSDN通过智能技术生成

1、RESTful

  REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就
是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之
间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务
器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用
服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
  在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它
向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI(Universal Resource Identifier)得到一个 唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和DELETE
  在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。

2、客户端安装

  如果直接通过浏览器向 Elasticsearch 服务器发请求,那么需要在发送的请求中包含HTTP 标准的方法,而 HTTP 的大部分特性且仅支持 GET 和 POST 方法。所以为了能方便地进行客户端的访问,可以使用 Postman 软件。
  Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。
软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送
任何类型的 HTTP 请求 (GET, HEAD, POST, PUT..),不仅能够表单提交,且可以附带任意
类型请求体。

3、数据格式

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比
在这里插入图片描述
ES 里的 Index 可以看做一个库,而 Types 相当于表Documents 则相当于表的行
这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个
type,Elasticsearch 7.X 中, Type 的概念已经被删除了。

用 JSON 作为文档序列化的格式,比如一条用户信息:

{
 "name" : "John",
 "sex" : "Male",
 "age" : 25,
 "birthDate": "1990/05/01",
 "about" : "I love to go rock climbing",
 "interests": [ "sports", "music" ]
}

4、HTTP 操作

1、创建索引

对比关系型数据库,创建索引就等同于创建数据库
在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping
在这里插入图片描述
请求后,服务器返回响应:
在这里插入图片描述

{
 "acknowledged"【响应结果】: true, # true 操作成功
 "shards_acknowledged"【分片结果】: true, # 分片操作成功
 "index"【索引名称】: "shopping"
}
# 注意:创建索引库的分片数默认 1 片,在 7.0.0 之前的 Elasticsearch 版本中,默认 5

如果重复添加索引,会返回错误信息

在这里插入图片描述

2、查看所有索引

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/_cat/indices?v
在这里插入图片描述
这里请求路径中的_cat 表示查看的意思,indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉,服务器响应结果如下
在这里插入图片描述

表头含义
health当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status索引打开、关闭状态
index索引名
uuid索引统一编号
pri主分片数量
rep副本数量
docs.count可用文档数量
docs.deleted文档删除状态(逻辑删除)
store.size主分片和副分片整体占空间大小
pri.store.size主分片占空间大小

3、 查看单个索引

Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping
在这里插入图片描述
查看索引向 ES 服务器发送的 请求路径和创建索引是一致的。但是 HTTP 方法不一致。这里可以体会一下 RESTful 的意义,请求后,服务器响应结果如下:
在这里插入图片描述

 {
	"shopping"【索引名】: {
		"aliases"【别名】: {},
		"mappings"【映射】: {},
		"settings"【设置】: {
			"index"【设置 - 索引】: {
				"creation_date"【设置 - 索引 - 创建时间】: "1614265373911",
				"number_of_shards"【设置 - 索引 - 主分片数量】: "1",
				"number_of_replicas"【设置 - 索引 - 副分片数量】: "1",
				"uuid"【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A",
				"version"【设置 - 索引 - 版本】: {
					"created": "7080099"
				},
				"provided_name"【设置 - 索引 - 名称】: "shopping"
			}
		}
	}
}

4、删除索引

Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping
在这里插入图片描述
在这里插入图片描述
重新访问索引时,服务器返回响应:索引不存在
在这里插入图片描述
在这里插入图片描述

5、 文档操作

1、创建文档

索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数
据库中的表数据,添加的数据格式为 JSON 格式

Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/phone
请求体内容为:

{
 "title":"小米手机",
 "category":"小米",
 "images":"http://www.gulixueyuan.com/xm.jpg",
 "price":3999.00
}

在这里插入图片描述
此处发送请求的方式 必须为 POST不能是 PUT,否则会发生错误
在这里插入图片描述

服务器响应结果如下:
在这里插入图片描述

{
	 "_index"【索引】: "shopping",
	 "_type"【类型-文档】: "_doc",
	 "_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为 MySQL 中的主键,随机生成
	 "_version"【版本】: 1,
	 "result"【结果】: "created", #这里的 create 表示创建成功
	 "_shards"【分片】: {
	 "total"【分片 - 总数】: 2,
	 "successful"【分片 - 成功】: 1,
	 "failed"【分片 - 失败】: 0
	 },
	 "_seq_no": 0,
	 "_primary_term": 1
}

上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机 生成一个。
如果想要自定义唯一性标识,需要在创建时指定:http://127.0.0.1:9200/shopping/phone/1
在这里插入图片描述
请求地址的phone有点类似于数据的表的意思,若都是都是phone就好像都在phone表上,若不同就不同一张表上
在这里插入图片描述
此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT

2、查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询
Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping/_doc/1
注意:请求地址的 _doc要换成你自己的文档名字。例如:phone
在这里插入图片描述

查询成功后,服务器响应结果:
在这里插入图片描述

{
	 "_index"【索引】: "shopping",
	 "_type"【文档类型】: "_doc",
	 "_id": "1",
	 "_version": 2,
	 "_seq_no": 2,
	 "_primary_term": 2,
	 "found"【查询结果】: true, # true 表示查找到,false 表示未查找到
	 "_source"【文档源信息】: {
		 "title": "华为手机",
		 "category": "华为",
		 "images": "http://www.gulixueyuan.com/hw.jpg",
		 "price": 4999.00
 	}
}

3、修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖
在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_doc/1
注意:请求地址的 _doc要换成你自己的文档名字。例如:phone

请求体内容为:

{
	 "title":"华为手机",
	 "category":"华为",
	 "images":"http://www.gulixueyuan.com/hw.jpg",
	 "price":4999.00
}

在这里插入图片描述

修改成功后,服务器响应结果:
在这里插入图片描述

{
	 "_index": "shopping",
	 "_type": "_doc",
	 "_id": "1",
	 "_version"【版本】: 2,
	 "result"【结果】: "updated", # updated 表示数据被更新
	 "_shards": {
	 "total": 2,
	 "successful": 1,
	 "failed": 0
	 },
	 "_seq_no": 2,
	 "_primary_term": 2
}

4、修改字段

修改数据时,也可以只修改某一给条数据的局部信息
在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/phone/_update/1
请求体内容为:

{
	 "doc": {
	 	"price":3000.00
	 }
}

在这里插入图片描述

修改成功后,服务器响应结果:
在这里插入图片描述
根据唯一性标识,查询文档数据,文档数据已经更新
在这里插入图片描述

5、删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。
在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping/_doc/1
在这里插入图片描述
删除成功,服务器响应结果:
在这里插入图片描述

{
	 "_index": "shopping",
	 "_type": "_doc",
	 "_id": "1",
	 "_version"【版本】: 4, #对数据的操作,都会更新版本
	 "result"【结果】: "deleted", # deleted 表示数据被标记为删除
	 "_shards": {
		 "total": 2,
		 "successful": 1,
		 "failed": 0
	 },
	 "_seq_no": 4,
	 "_primary_term": 2
}

删除后再查询当前文档信息
在这里插入图片描述
在这里插入图片描述
如果删除一个并不存在的文档
在这里插入图片描述


在这里插入图片描述

{
	 "_index": "shopping",
	 "_type": "_doc",
	 "_id": "1",
	 "_version": 1,
	 "result"【结果】: "not_found", # not_found 表示未查找到
	 "_shards": {
		 "total": 2,
		 "successful": 1,
		 "failed": 0
	 },
	 "_seq_no": 5,
	 "_primary_term": 2
}

6、条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数
据进行删除

首先分别增加多条数据:

{
	 "title":"小米手机",
	 "category":"小米",
	 "images":"http://www.gulixueyuan.com/xm.jpg",
	 "price":4000.00
}
{
	 "title":"华为手机",
	 "category":"华为",
	 "images":"http://www.gulixueyuan.com/hw.jpg",
	 "price":4999.00
}

在这里插入图片描述



在这里插入图片描述
向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_delete_by_query

请求体内容为:

{
	"query": {
		"match": {
			"price": 4000.00
		}
	}
}

在这里插入图片描述
删除成功后,服务器响应结果:
在这里插入图片描述

{
	 "took"【耗时】: 175,
	 "timed_out"【是否超时】: false,
	 "total"【总数】: 2,
	 "deleted"【删除数量】: 2,
	 "batches": 1,
	 "version_conflicts": 0,
	 "noops": 0,
	 "retries": {
		 "bulk": 0,
		 "search": 0
	 },
	 "throttled_millis": 0,
	 "requests_per_second": -1.0,
	 "throttled_until_millis": 0,
	 "failures": []
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个开源的分布式搜索和分析引擎,它可以用于存储、搜索和分析大量的数据。以下是一些Elasticsearch基本操作: 1. 安装和启动Elasticsearch:首先,你需要从Elasticsearch官方网站下载和安装Elasticsearch。安装完成后,你可以使用命令行或者图形界面来启动Elasticsearch。 2. 创建索引:在Elasticsearch中,数据存储在索引中。你可以使用PUT请求来创建一个新的索引。例如,使用curl命令可以发送以下请求来创建一个名为"my_index"的索引: ``` curl -XPUT 'localhost:9200/my_index' ``` 3. 添加文档:一旦索引创建好了,你可以使用POST请求来向索引中添加文档。文档是以JSON格式表示的数据。以下是向名为"my_index"的索引添加一个文档的示例请求: ``` curl -XPOST 'localhost:9200/my_index/_doc' -d ' { "title": "Elasticsearch Basics", "content": "This is a basic introduction to Elasticsearch" }' ``` 4. 搜索文档:你可以使用GET请求来搜索索引中的文档。以下是一个搜索名为"my_index"的索引中包含关键字"elasticsearch"的文档的示例请求: ``` curl -XGET 'localhost:9200/my_index/_search?q=elasticsearch' ``` 5. 更新文档:使用POST请求可以更新索引中的文档。以下是更新名为"my_index"的索引中ID为1的文档的示例请求: ``` curl -XPOST 'localhost:9200/my_index/_doc/1/_update' -d ' { "doc": { "content": "This is an updated content" } }' ``` 6. 删除文档:使用DELETE请求可以删除索引中的文档。以下是删除名为"my_index"的索引中ID为1的文档的示例请求: ``` curl -XDELETE 'localhost:9200/my_index/_doc/1' ``` 这些是Elasticsearch的一些基本操作。你可以根据需要进一步探索和学习更多高级功能和API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值