社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

一文带您了解 Elasticsearch 中,如何进行索引管理(图文教程)

公众号_小哈学Java • 5 年前 • 519 次点击  
阅读 2

一文带您了解 Elasticsearch 中,如何进行索引管理(图文教程)

欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章!!

个人网站: www.exception.site/essay/about…

在 Elasticsearch 中,索引是一个非常重要的概念,它是具有相同结构的文档集合。类比关系型数据库,比如 Mysql, 你可以把它对标看成和同级别的概念。

今天小哈将带着大家了解, 在 Elasticsearch 中,都是如何对索引进行操作的。

目录

  • 一、创建索引
  • 二、删除索引
  • 三、获取索引信息
  • 四、打开/关闭索引

一、创建索引

1.1 开始创建索引

您可以通过 Elasticsearch 的 RESTFul API 来创建索引:

PUT http://127.0.0.1:9200/commodity
复制代码

注意:默认情况下,创建的索引分片数量是 5 个,副本数量是 1 个。

您可以通过如下参数来指定分片数、副本数量:

{
	"settings": {
		"number_of_shards": 3,
		"number_of_replicas": 2
	}
}
复制代码

1.1.1 实战演示

通过 CURL 命令来上手操作一下,我们尝试创建一个商品索引, 看下效果:

curl -X PUT "localhost:9200/commodity?pretty"
复制代码

索引创建成功会返回以下出参:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "commodity"
}
复制代码

如下图所示:

1.2 创建带有类型、映射的索引(Index)

其实,我们可以在创建索引的时候,同时将索引的类型、以及映射一并创建好:

curl -X PUT "localhost:9200/commodity?pretty"
复制代码

入参:

{
	"settings": {
		"number_of_shards": 3,
		"number_of_replicas": 2
	},
	"mapping": {
		"_doc": {
			"properties": {
				"commodity_id": {
					"type": "long"
				},
				"commodity_name": {
					"type": "text"
				},
				"picture_url": {
					"type": "keyword"
				},
				"price": {
					"type": "double"
				}
			}
		}
	}
}
复制代码

我们创建了一个分片数为 3,副本数为 2 的索引,同时,定义了一个 _doc 的类型,里面包含了 4 个字段,类型各不相同。

接下来,我们用 Postman 工具来一次性创建带有类型、映射的索引(Index):

这里应为笔者通过 CURL 创建索引,由于带入参,出现了格式错误的问题,改用了 Postman 工具,效果相同。

1.3 修改索引的副本数

我们可以通过如下 API 来修改索引的副本数:

PUT http://127.0.0.1:9200/commodity/_settings
复制代码

入参:

{
	"number_of_replicas": 3
}
复制代码

我们将 commodity 索引副本数更新为了 3:

二、删除索引

2.1 开始删除索引

通过如下 Elasticserach API 来删除索引:

PUT http://127.0.0.1:9200/commodity
复制代码

如上示例,删除了名称为 commodity 的索引。除了指定名称删除外,我们还可以通过索引别名或者通配符来删除。

注意:要谨慎使用 _all* 去删除全部索引。

生产环境中,为了防止索引被误删,我们可以将 elasticsearch.yml 配置文件中的 action.destructive_requires_name 配置项设置为 true, 以达到强制使用索引名称、别名才能删除索引的效果。

2.2 实战操作

接下来,我们通过 CURL 命令来删除 commodity 索引:

curl -X DELETE "localhost:9200/commodity?pretty"
复制代码

三、获取索引信息

3.1 通过具体索引名称来获取索引信息

通过 Elasticsearch 提供的接口,我们可以获取一个或多个索引信息。

GET http://127.0.0.1:9200/commodity
复制代码

这里,我们用 CURL 命令来演示一下,来获取 commodity 索引的具体信息:

curl -X GET http://127.0.0.1:9200/commodity?pretty
复制代码

效果如下:

如图所示,结果中包含了索引的映射信息,以及一些配置信息。

注意:若索引中是空的,也就是没有一条文档的话,映射(mapping)信息将是空的。

3.2 通过通配符来获取索引信息

除了上面说到的,通过具体索引名称来获取索引信息外,我们还可以通过别名通配符来获取。

通过通配符来或者 _all* 来多个索引的信息。

3.3 添加筛选条件来获取索引信息

我们可以在 URL 中指定筛选条件,只获取自己想要的信息,比如只想要 commodity 索引的映射信息,操作如下:

GET http://127.0.0.1:9200/commodity/_mappings
复制代码

通过 CURL 命令来演示下:

curl -X GET http://127.0.0.1:9200/commodity/_mappings?pretty
复制代码

可以看到,只返回了索引的映射信息。

如果你只想获取索引的配置信息,通过如下接口即可:

GET http://127.0.0.1:9200/commodity/_settings
复制代码

四、打开/关闭索引

什么是 Elasticsearch 打开/关闭索引? 先说说什么是关闭索引?一旦索引被关闭,那么这个索引只能显示元数据信息,不能够进行读写操作。

再说说打开索引就好理解了。就是打开被关闭的索引,允许进行读写操作。

通过 /{索引名}/_close 关闭索引
通过 /{索引名}/_open 打开索引
复制代码

4.1 关闭索引

比如说,我们想关闭 commodity 索引:

POST http://127.0.0.1:9200/commodity/_close
复制代码

CURL 命令如下:

curl -X POST http://127.0.0.1:9200/commodity/_close?pretty
复制代码

索引已经被关闭成功,这个时候,我们再向 commodity 添加一条文档信息,看看结果如何:

可以看到,返回了一个索引已被关闭的异常,文档无法被正常创建。

4.2 打开索引

通过如下请求,我们可以打开一个被关闭的索引:

POST http://127.0.0.1:9200/commodity/_open
复制代码

接下来,我们通过 CURL 命令来打开刚刚被关闭的 commodity 索引:

curl -X POST http://127.0.0.1:9200/commodity/_open?pretty
复制代码

文档被打开成功后,我们就可以愉快的对索引进行读写操作了。

五、最后

本文介绍了 Elasticsearch 索引管理相关的 API, 希望大家看完过后有所收获。

欢迎关注微信公众号: 小哈学Java

关注笔者的微信公众号: 小哈学Java, 每日第一时间推送干货文章, 另外, 笔者个人吐血整理了 100G 的学习资料, 关注回复「666」即可免费无套路领取哟~

关注微信公众号【小哈学Java】,回复【资源】,即可免费无套路领取资源链接哦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39511
 
519 次点击