个人网站:
在 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.YAML 配置文件中的 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, 希望大家看完过后有所收获.
来源: https://www.cnblogs.com/quanxiaoha2/p/11453089.html