Elasticsearch基本使用初体验01

news2024/11/17 14:25:05

ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。

1.es的安装

工欲善其事,必先利其器;想要学es,我们首先需要先下载安装es,es下载地址
在这里插入图片描述
可以根据自己的操作系统选择对应的版本的es,当然也可以使用docker来安装es。Mac系统中还可以使用brew快速安装Elasticsearch。这里我就使用brew指令来安装es。

# 最好使用这个指令安装es
brew install elastic/tap/elasticsearch-full 

# 这个指令基本弃用了
brew install elasticsearch

安装完成后可使用elasticsearch --version查看ES版本信息。

elasticsearch --version

在这里插入图片描述
同时可以通过brew info elasticsearch指令查看es的基本信息,例如,数据和配置的文件路径。

brew info elasticsearch

在这里插入图片描述
可以通过前台和后台的方式启动es。

# 前台启动
elasticsearch

# 后台启动
elasticsearch -d

启动es,然后在postman中发起请求:localhost:9200,出现以下画面表示es启动成功了。
在这里插入图片描述
其他系统的安装也非常简便,这里就不一一演示了。

2.es基本体验

es是面向文档型数据库,一条数据在这里就是一个文档。es里的index可以看做一个库,Documents则相当于表的行。

2.1 创建索引

对比关系型数据库,创建索引就等同于创建数据库。
在Postman中,向es服务器发PUT请求 : http://localhost:9200/shopping
在这里插入图片描述
如果重复发 PUT 请求 : http://loaclhost:9200/shopping 添加索引,会返回资源已存在的错误。
在这里插入图片描述

2.2 查看单个索引信息

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping
在这里插入图片描述

2.3 查看所有索引

请求路径中的_cat表示查看的意思, indices表示索引,所以整体含义就是查看当前es服务器中的所有索引。
在Postman中,向es服务器发GET请求:http://localhost:9200/_cat/indices?v
在这里插入图片描述

2.4 删除索引

在Postman中,向es服务器发DELETE请求 : http://localhost:9200/shopping。
在这里插入图片描述

2.5 创建文档

在索引已经创建后,接下来我们就需要创建文档,并添加数据。这里的文档就类似于关系型数据库中的表数据,添加的数据格式为JSON格式。

在Postman中,向es服务器发POST请求 : http://localhost:9200/shopping/_doc,请求体JSON内容为:

{
    "title":"苹果手机",
    "category":"苹果",
    "images":"http://www.picacho.top/1.jpg",
    "price":7999.00
}

在这里插入图片描述
这里有一点需要注意,此处发送请求的方式必须为POST,不能是PUT,否则会发生错误 。上文档创建后,由于没有指定数据唯一性标识(ID),默认情况下, es服务器会随机生成一个。如果想要自定义唯一性标识,需要在创建时指定主键。

在Postman中,向es服务器发POST请求 :http://localhost:9200/shopping/_doc/1。
在这里插入图片描述
此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为PUT。

2.6 查看文档

查看索引下所有数据,在Postman中,向es服务器发GET请求 :http://localhost:9200/shopping/_search。
在这里插入图片描述
查看文档时,可以通过指明文档的唯一性标识来查询具体的文档数据。

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_doc/1 。
在这里插入图片描述
如果在索引下查找不存在的文档时,就会出现下面的情况。
在这里插入图片描述

2.7 修改文档

和新增文档一样,输入相同的URL地址请求,如果请求体变化,会将原有的数据内容覆盖。在Postman中,向es服务器发POST请求 : http://localhost:9200/shopping/_doc/1。
请求体JSON内容为:

{
    "title":"小米10",
    "category":"小米",
    "images":"http://www.picacho.top/1.jpg",
    "price":4999.00
}

在这里插入图片描述
也可以实现局部修改,修改数据时,也可以只修改某一给条数据的局部信息。
在Postman中,向es服务器发POST请求 : http://localhost:9200/shopping/_update/1。
请求体JSON内容为:

{
	"doc": {
		"title":"小米12",
		"category":"小米"
	}
}

在这里插入图片描述

2.8 删除文档

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

3.es的复杂操作

3.1 条件查询

首先往es中添加几条数据,以便后面查询展示。

{
    "title":"小米13",
    "category":"小米",
    "images":"http://www.picacho.top/1.jpg",
    "price":4999.00
}

{
    "title":"小米14",
    "category":"小米",
    "images":"http://www.picacho.top/1.jpg",
    "price":4999.00
}

{
    "title":"小米15",
    "category":"小米",
    "images":"http://www.picacho.top/1.jpg",
    "price":4999.00
}

{
    "title":"小米16",
    "category":"小米",
    "images":"http://www.picacho.top/1.jpg",
    "price":4999.00
}

URL携带参查询
查找category为小米的文档,在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search?q=category:小米。
在这里插入图片描述
这种在URL中携带参数,并不是首选的条件查询的方法,所以可以将查询条件放到请求体中。

请求体带参查询
还是查找category为小米的文档,在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,JSON体如下:

{
	"query":{
		"match":{
			"category":"小米"
		}
	}
}

在这里插入图片描述
查询指定字段
如果只想查询文档中的指定字段,在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,JSON体如下:

{
	"query":{
		"match":{
            "category":"苹果"
        }
	},
	"_source":["title"]
}

在这里插入图片描述
可以看到查询结果中只包含了title的内容。

3.2 分页查询

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,JSON体如下:

{
	"query":{
		"match_all":{}
	},
	"from":0,
	"size":2
}

在这里插入图片描述
可以看到这里只显示了两条记录。

3.3 查询后排序

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,JSON体如下:

{
	"query":{
		"match_all":{}
	},
	"sort":{
		"price":{
			"order":"desc"
		}
	}
}

在这里插入图片描述

3.4 多条件组合查询

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,查询出小米或苹果,价格大于5000的数据,JSON体如下:

{
	"query":{
		"bool":{
			"should":[{
				"match":{
					"category":"小米"
				}
			},{
				"match":{
					"category":"苹果"
				}
			}],
            "filter":{
            	"range":{
                	"price":{
                    	"gt":5000
                	}
	            }
    	    }
		}
	}
}

should的作用相当于数据库的||,filter的作用相当于数据的各种范围比较操作符。
在这里插入图片描述

3.5 全文检索

这功能像搜索引擎那样,例如输入“小果”,返回结果带回品牌有“小米”和苹果的。

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,JSON体如下:

{
	"query":{
		"match":{
			"category" : "小果"
		}
	}
}

在这里插入图片描述

3.6 完全匹配

在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,附带JSON体如下:

{
	"query":{
		"match_phrase":{
			"category" : "苹"
		}
	}
}

在这里插入图片描述

3.7 聚合查询

聚合允许使用者对es对文档进行统计分析,类似与关系型数据库中的group by,当然还有很多其他的聚合,例如取最大值max、平均值avg等等。

接下来按price字段进行分组,在Postman中,向es服务器发GET请求 : http://localhost:9200/shopping/_search,附带JSON体如下:

{
	"aggs":{//聚合操作
		"price_group":{//名称,随意起名
			"terms":{//分组
				"field":"price"//分组字段
			}
		}
	}
}

在这里插入图片描述
当然还有很多查询操作,这里就不一一展示了,结下来需要使用Java操作es了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九龙证券|磷酸铁锂电池包和铅酸电池有哪些区别?

目前,新能源汽车电动车一般用的电池有3种,铅酸蓄电池、镍氢充电电池、锂离子电池。伴随着电动车蓄电池技能工艺的升级换代,锂电池的发展壮大和应用领域日益持续上升。那么,磷酸铁锂电池包和铅酸电池有哪些差异呢?铅酸蓄…

PowerShell 美化(oh-my-posh)

文章目录PowerShell 美化一、 添加右键菜单1、 修改默认右键菜单2、 寻找安装目录3、 修改注册表二、 样式修改1、 环境安装2、 配置使用PowerShell 美化 一、 添加右键菜单 1、 修改默认右键菜单 直接使用这个命令可以将 win11 的右键菜单修改为 win10 的右键菜单&#xff1…

基础数学(三)位运算 JZ 15.位1的个数

正在刷DFS相关题的时候突然间,给我蹦出来这样一个回溯题: 401. 二进制手表 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1&#xff…

maven 解决Cannot access alimaven以及Process terminated

maven 解决Cannot access alimaven以及Process terminated 目录maven 解决Cannot access alimaven以及Process terminated方案一:用idea打开settings.xml,更正红色报错方案二:将IDEA的Maven默认版本更换成你下载的maven文件夹方案三&#xff…

单片机堆栈知识总结

堆栈 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 其实堆栈就是单片机中的一些存储单元,这些存储单元被指定保存一些特殊信息,比如地址&#xff0…

DFS(二)岛屿问题合集

目录 一、 463. 岛屿的周长 二、 130. 被围绕的区域 三、 200. 岛屿数量 四、695. 岛屿的最大面积 一、463. 岛屿的周长 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 …

Java设计模式-解释器模式、解释器模式什么回事,抽象语法树又是什么

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.12 解释器模式 6.12.1 概述 思维:翻译识别机器,如解析由数字、“”、“-”号构成的合法运算序列,若将数字和字符看作结点&a…

Lesson 4.1 逻辑回归模型构建与多分类学习方法

文章目录一、广义线性模型(Generalized liner model)的基本定义二、对数几率模型与逻辑回归1. 对数几率模型(logit model)2. 逻辑回归与 Sigmoid 函数3. Sigmoid 函数性质三、逻辑回归模型输出结果与模型可解释性四、多分类学习与…

CPU缓存一致性

CPU缓存一致性写直达写回缓存一致性总线嗅探MESI协议CPU Cache通常分为三级缓存,L1Cache,L2Cache,L3Cache,级别越低的离CPU越近,访问速度越快,但同时容量越小,价格越贵。在多核的CPU中,每个核都…

今天大年三十,新年快乐,我在这里给大家整理了一下除夕的习俗,来看看吧

今天是大年三十,阿玥在这里祝大家,一来风水,二来平安,阖家欢乐,四季平安,五福临门,六六大顺,七星高照,八方来财,十全十美,新年好! 名字:不晓得 学习:python,c 主页:木有 今天给大家整理一下大年三十的习俗等小知识,就不更python啦 目录 除夕要做的事情有什么…

Meta CTO:真正的全天候轻量化AR眼镜,可能要到2030年

去年Meta发布了售价高达1500美元的VST头显Quest Pro,该头显与Meta的Quest 2等产品在定价、技术路径上有很大不同,其搭载了眼球追踪、彩色VST等更高端的功能,而产品发布后,外界对其反馈也褒贬不一。作为Pro产品线首个产品&#xff…

Markdown基础总结

Markdown Tools TyporaVSCode Markdown Preview Enhanced扩展 有道云笔记… 上述工具都能很好地支持markdown书写 Markdown标题 1 使用 和 - 标记一级和二级标题 和 - 标记语法格式如下: 我展示的是一级标题我展示的是二级标题 ---效果如下: 2 使用 # 号标…

Java设计模式-访问者模式、访问者模式怎么使用,具体是怎么用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.10 访问者模式 6.10.1 定义 封装一些作用域某种数据结构中的各元素的操作,可以在不改变此数据结构的前提下定义作用于这些元素的新操作 6.10.2 结…

2023年新年烟花代码(背景音乐完整版)

文章目录前言烟花效果展示使用教程查看源码HTML代码CSS代码JavaScript新年祝福前言 大家过年好!新春佳节,在这个充满喜悦的日子里,愿新年的钟声带给你一份希望和期待,我相信,时空的距离不能阻隔你我,我的祝…

Solidity 中的数学(第 5 部分:指数和对数

本文是关于在 Solidity 中进行数学运算的系列文章中的第五篇。这次的主题是:指数和对数 介绍 几个世纪以来,对数被用来简化计算。在电子计算器广泛普及之前,计算尺、基于对数的机械计算器是工程师职业的标志。 对数函数连同指数函数&#x…

【matplotlib】21.多图合并【python3、numpy、pandas、matplotlib完结】

#【matplotlib】21.多图合并 2023.1.20 python3、numpy、pandas、matplotlib完结 新年快乐!! 21.1 多合一显示 21.1.1 均匀分布 方法很简单 就是一张图 分几块 第一张占几块 从哪开始;第二张… plt.subplot() # 打开一个窗口 import ma…

Redis数据类型简介

目录 1、字符串(Strings) 1.1、底层实现 1.2、基本命令 1.3、应用场景 2、列表(Lists) 2.1、底层实现 2.2、基本命令 2.3、应用场景 3、集合(Sets) 3.1、底层实现 3.2、基本命令 3.3、应用场景 4、哈希(Hashes) 4.1、底层实现 4.2、基本命令 4.3、应用场景 5、…

Caché数据库简要记录

前一阵子,实施的小伙伴找过来问我用过 Cach 数据库吗?我当时有点懵?难道是 redis、memcached 之流?后来我特意去搜索了一下,还真是有一款数据库叫做 Cach Database。 这里做一下简单的记录吧,Cach 在医疗系…

Mine Goose Duck 0.1版本发布

我本次制作了一款MC版的Goose Goose Duck模组,游戏版本是Forge 1.19.2。 1.身份物品 熟悉鹅鸭杀的朋友都知道游戏中含有许多的身份,有好人、坏人、中立三个阵营,本次我加入了原作中的一些基本角色: 1.警长 你可以杀死怪物但错…

DFS(三)电话号码的字母组合

数组版本 哈希版本: 一、17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1&#x…