Elasticsearch 7.X RESTful 风格 索引、文档、映射操作_elasticsearch7 文档_小毕超的博客-程序员宅基地

技术标签: restful  elasticsearch  搜索引擎  

一、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,
                "analyzer": "pinyin"
			},
			"sex": {
				"type": "text",
				"index": true,
                "analyzer": "ik_smart"
			},
			"age": {
				"type": "long",
				"index": false
			}
		}
	}
}

在这里插入图片描述

4. 增加映射字段:

向 ES 服务器发 PUT 请求 :

http://127.0.0.1:9200/user3/_mapping
{
  "properties": {
     "item": {
        "type": "nested",
        "properties": {
            "value": {
                "type": "long"
            }
        }
    }
  }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43692950/article/details/122222522

智能推荐

IT术语-程序员宅基地

OOP ----------> 面向对象编程

PAT乙级 1005_pat 乙级1005 java-程序员宅基地

1006. 换个格式输出整数 (15)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(输入格式:_pat 乙级1005 java

Java程序设计 黄岚pdf,黄岚java程序设计习题答案-程序员宅基地

黄岚java程序设计习题答案更多相关问题[名词解释] T型梁桥[填空题] 光栅读数头是由()组成。[名词解释] 主梁[单选] 检测元件在数控机床中的作用是检测移位和速度,发送()信号,构成闭环控制。[名词解释] 主梁[问答题] 对于城市桥梁桥面的排水设施处理时,应注意的问题有哪些?[单选] 闭环控制方式的移位测量元件应采用()。[名词解释] 施工便桥[名词解释] 空心板[名词解释] T形钢构桥[名..._java程序设计黄岚王岩书习题答案

【解决】gnglia报错:Can‘t open PID file /usr/local/ganglia/var/run/gmetad.pid (yet?)_pas-node.service: can't open pid file /opt/idc/app-程序员宅基地

我修改了一下配置文件,ganglia忽然就说打不开PID,这让我真的是莫名其妙。于是我检查了pid的文件目录,发现所有文件都在这个pid应该属于启动gmeta这个服务启动后及自动进行创建的,因为我之前认为时权限问题,特意改了gmetad.pid的权限,这样之后重启服务,确实权限没有了gmeta.pid的文件可以查看里面的id在这里我基本可以确定确实那里权限出问题了,所以再考虑gmetad启动时,在哪里设置服务当我快放弃的时候终于找到解决办法了,真是要炸了。这是我找打的gmetad.p_pas-node.service: can't open pid file /opt/idc/apps/pas-node/node-agent/star

linux下MYSQL备份与恢复(转别人的)-程序员宅基地

数据库备份是很重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份,下面假设要备份tm这个数据库: #mysqldump -u root -p tm > tm_050519.sql 按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_050519.sq..._linux连接别的mysql后备份

JavaScript鼠标事件onmousedown,onmousemove,onmouseout,onmouseover,onmouseup的用法和区别详解_onmousedown切出-程序员宅基地

查看大图:http://img.blog.csdn.net/20170926152616874?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmFlcmlleXc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center_onmousedown切出

随便推点

RIP配置_配rip时命令写的是网络地址还是-程序员宅基地

3.1实验目的1.掌握网络设备、终端端口IP地址配置2.掌握网关的基本概念3.掌握RIP路由选择协议配置4.掌握网络配置拍错基本方法3.2基本概念1.网关网关实质上是一个网络通向其他网络的出口(该出口的IP地址)。类似于人类必须经过大楼出口。路由器的RA的接口f0/0为网络A的网关,路由器RB的接口f0/0为网络的网关。2.SVI三层交换机中不同VLAN之间相互通信,必须经过网关,如果没有路由器,可以用SVI作为VLAN的网关。VLAN虚拟接口配置了IP地址后,该接口即可以作为本VLA_配rip时命令写的是网络地址还是

Kafka源码分析9:Controller控制器的原理(图解+秒懂+史上最全)_controlle结构-程序员宅基地

文章很长,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈 奉上以下珍贵的学习资源: 免费赠送 经典图书:《Java高并发核心编程(卷1)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《Java高并发核心编程(卷2)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《SpringCloud _controlle结构

mysql平台相关_系统性能相关的MySQL变量-程序员宅基地

系统性能相关的MySQL变量原文摘录自:http://forge.mysql.com/wiki/ServerVariablesMemory-Related Variables内存相关变量These server variables control the amount of memory allocated to the various buffers and caches within MySQ...

查看表空间的大小_select sum(bytes)/1024 as data_size from user_segm-程序员宅基地

/*查询索引占表空间的大小*/select (sum(bytes)/1024/1024)||'MB' from dba_segments where segment_name = 'PK_CS_REC_RECEPTION';/*查询表占表空间的大小*/ select (sum(bytes)/1024/1024)||'MB' from user_extents t where segment_name=upper('reception_select sum(bytes)/1024 as data_size from user_segments where segment_name=

知识碎片之The hacker playbook 环境配置过程中遇到的问题及解决方法_smbexec安装不成功-程序员宅基地

gitrob在安装gitrob过程中进行到gem install gitrob这一步时出现如下问题:解决方法:apt-get install zlib1g-dev安装smbexec过程中遇到若干问题最终按照这篇文章的流程完成安装。安装Windows虚拟机配置Hyperion时遇到如下错误:解决方法就是打开makefile文件然后在CFLAGS 最后面添加:-std=gnu+..._smbexec安装不成功

win+linux+socket多线程搜索服务器端文件-程序员宅基地

本人正在学习socket网络编程,同时又在看多线程的编程,所以就pgn