Elasticsearch 7.X RESTful 风格 索引文档映射操作

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 7.X RESTful 风格 索引文档映射操作相关的知识,希望对你有一定的参考价值。

一、Elasticsearch

Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。
Elasticsearch就是为高可用和可扩展而生的。可以通过购置性能更强的服务器来完成。

在本专栏的前几篇文章中我们介绍过ES 6.X 版本的介绍,包括ELK的搭建,感兴趣的小伙伴也可以看下本专栏的其他文章,本篇内容我们讲解下ES 7.X 版本的使用,该篇文章主要基于RESTful 的方式调用ES所提供的API。

截止到目前,ES的版本已到 7.16.2

在开始前可以去官方地址中下载一个ES7.X版本的安装包,下面是下载地址:

https://www.elastic.co/cn/downloads/past-releases#elasticsearch

从上面的图片可以看出,现在版本已经到了7.16.2,但我们不适用那么新的,这里我选择了个比较适中的版本 7.14.0,太新的不一定就是最好的。

这里我们先使用下window版本进行测试,下篇文章我们讲解ES集群的搭建。下载完成后,解压进入bin下,双击elasticsearch.bat 即可启动ES。

本篇测试基于PostMan发送Rest Http请求的。

二、索引操作

1. 创建索引

在7.XEs的type已逐渐被淘汰,可以把索引理解为传统数据库的表。

向 ES 服务器发 PUT 请求:

http://127.0.0.1:9200/user


如果重复添加索引,会提示错误。

2. 查看所有索引

向 ES 服务器发 GET 请求 :

http://127.0.0.1:9200/_cat/indices?v


已经查出刚才添加的索引。

3. 查看单个索引的详细信息

向 ES 服务器发 GET 请求 :

http://127.0.0.1:9200/user


已经查出,可以看到更详细的信息了,比如上面的分片数和副本数,ES创建索引时不指定分片和副本默认都是1

4. 删除索引

向 ES 服务器发 DELETE 请求 :

http://127.0.0.1:9200/user



再次查询就已经不存在了。

5. 删除索引

三、文档操作

文档可以理解为关系型数据库中的表数据,但ES中的数据格式为 JSON 格式。这里先把上面删除的索引user 创建好,下面就在user索引中进行演示:

1. 创建文档

向 ES 服务器发 POST 请求 :

http://127.0.0.1:9200/user/_doc

请求体内容为:


 "name":"张三",
 "age":18,
 "sex":"男"


由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机生成一个。

2. 创建文档指定ID

向 ES 服务器发 POST 请求 :

http://127.0.0.1:9200/user/_doc/001

请求体内容为:


 "name":"张三",
 "age":18,
 "sex":"男"


已经是自定义的ID了。

3. 查看文档

查看文档时,需要指明文档的唯一性标识,类似于 mysql 中数据的主键查询。
向 ES 服务器发 GET 请求 :

http://127.0.0.1:9200/user/_doc/001

4.修改文档(覆盖)

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖。
向 ES 服务器发 POST 请求 :

http://127.0.0.1:9200/user/_doc/001

请求体内容为:


 "name":"李四",
 "age":20,
 "sex":"男"


再次查询,可以看到已经修改。

5.修改文档(修改某个字段)

上面是一次修改整个文档,在修改数据时,也可以只修改某一给条数据的局部信息。

向 ES 服务器发 POST 请求 :

http://127.0.0.1:9200/user/_update/001

请求体内容为:

 
	 "doc": 
	  "name":"王五"
	  


再次查询,已经修改。

6.删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

向 ES 服务器发 DELETE 请求 :

http://127.0.0.1:9200/user/_doc/001

6.根据条件进行删除

可以根据条件对多条数据进行删除。

向 ES 服务器发 POST 请求 :

http://127.0.0.1:9200/user/_delete_by_query

请求体内容为:


	"query":
		"match":
			"name":"张三"
		
	 


显示了删除的条数。

四、映射操作

映射操作,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

1. 创建映射

创建映射前需要创建一个新的索引,下面创建user2索引:

向 ES 服务器发 PUT 请求:

http://127.0.0.1:9200/user2

下面再来创建映射,向 ES 服务器发 PUT 请求 :

http://127.0.0.1:9200/user2/_mapping

请求体内容为:


	"properties": 
		"name":
			"type": "text",
			"index": true
		,
		"sex":
			"type": "keyword",
			"index": true
		,
		"age":
			"type": "long",
			"index": false
		
	 


type 表示在ES中的数据类型,其中有:

  • String 类型,又分两种:
    text:可分词
    keyword:不可分词,数据会作为完整字段进行匹配

  • Numerical:数值类型,分两类
    基本数据类型:long、integer、short、byte、double、float、half_float
    浮点数的高精度类型:scaled_float

  • Date:日期类型

  • Array:数组类型

  • Object:对象

index表示是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。true:字段会被索引,则可以用来进行搜索,false:字段不会被索引,不能用来搜索

store表示是否将数据进行独立存储,默认为 false,原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置"store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置。

analyzer表示分词器,比如 ik 分词器。

2. 查看映射

向 ES 服务器发 GET 请求 :

http://127.0.0.1:9200/user2/_mapping

3. 索引映射关联

在创建索引时,就指定映射关联。

向 ES 服务器发 PUT 请求 :

http://127.0.0.1:9200/user3

请求体内容为:


	"settings": ,
	"mappings": 
		"properties": 
			"name": 
				"type": "text",
				"index": true

			,
			"sex": 
				"type": "text",
				"index": false
			,
			"age": 
				"type": "long",
				"index": false
			
		
	



喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

以上是关于Elasticsearch 7.X RESTful 风格 索引文档映射操作的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 7.X RESTful 风格 索引文档映射操作

Elasticsearch 7.X 集群环境搭建

Elasticsearch 7.X 集群环境搭建

ElasticSearch restful实操

ES使用Java API操作ES宝典(7.x版本及其以下)

Springboot 2.5.x整合ElasticSearch 7.1x