在我们开始深入探讨Elasticsearch的Restful API之前,有一点非常重要,那就是Elasticsearch存储的数据是JSON结构的。JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language的一个子集,但是独立于语言,具有广泛的语言支持。

Elasticsearch使用JSON作为其数据的存储和交换格式,这意味着当我们使用Restful API进行索引的增删改查操作时,我们将会处理的是JSON格式的数据。这使得我们可以轻松地存储和检索复杂的数据结构,同时也使得我们可以利用JSON的灵活性和易用性来满足各种数据需求。

在本篇文章中,我们将详细介绍如何使用Restful API来创建、删除、更新和查询JSON格式的索引。我们将深入了解每个操作的具体步骤和参数,并通过实际示例来演示其用法。

“索引”(index)是Elasticsearch中的基本概念,类似于传统数据库中的"数据表"。它用于存储和组织数据,每个索引可以包含多个文档,而每个文档则是JSON格式的数据记录。索引定义了文档的结构和字段映射,同时支持全文搜索、聚合和分析,使Elasticsearch成为强大的搜索和分析引擎。我们来学习index索引的增删改查,这也是在工作和学习中非常非常重要的一项内容,在本专栏中ES或者es表示Elastic Search。这节课的大纲如下:



index索引的增删改查

  • index索引的增
  • 创建索引
  • 克隆索引-先决条件
  • 克隆索引
  • 克隆索引-后置条件
  • 开启索引
  • index索引的删
  • 删除索引
  • 关闭索引
  • index索引的改
  • 清除索引缓存
  • 更新索引信息
  • 刷新索引
  • index索引的查
  • 分析索引磁盘使用情况
  • 查看索引是否存在
  • 获取索引信息
  • 获取索引分片信息
  • 获取索引统计信息


index索引的增

这里的增不仅仅局限于index的增加,还包括索引的克隆和开启索引的操作。这里,index_test是索引的名称,可以根据需求进行自定义,而其中的_开头的则代表ES官方的API,不可以进行自定义,所以我们不能创建索引以_开头。否则会报错:

Invalid index name [_index_test], must not start with '_', '-', or '+'

创建索引

PUT/index_test

这个请求的作用是创建一个名为 “index_test” 的索引(index)在 Elasticsearch 中。可以理解为在mysql中创建了一个什么字段都没有的空表。


返回的响应示例,意思如下:

  • "acknowledged": true 表示请求已被成功接受和执行,没有出现错误或问题。
  • "shards_acknowledged": true 表示请求已被索引的所有分片(shards)成功接受和执行。这表明请求影响到了索引的所有部分。
  • "index": "index_test" 提供了响应中的索引名称,这表明响应是与名为 “index_test” 的索引相关的。

这通常是一个表示成功的响应,表明操作已成功完成。

克隆索引-先决条件

克隆索引提供了一种灵活的方式来复制现有索引,这种功能有助于提高数据管理的效率和灵活性。

PUT/index_test/_settings
{
  "settings": {
    "index.blocks.write": true
  }
}

_settings就表示着官方的api,表示设置索引的相关信息。我们如果需要复制一个索引到新的索引要开启旧索引(index_test)的只读功能,保证在克隆的时候没有新数据进入到旧索引当中来。这通常用于临时禁止对索引的写入,以进行维护、备份或其他管理操作。


克隆索引

POST/index_test/_clone/index_test_clone

这个时候我们就可以开始克隆索引了,创建一个与原始索引相同结构和设置的克隆索引,其中包括索引映射、分片配置等。这对于创建备份、测试、开发或数据分析的目的非常有用。这里要注意的是index_test_clone索引不能优先存在。


克隆索引-后置条件

PUT/index_test/_settings
{
  "settings": {
    "index.blocks.write": false
  }
}

克隆之后取消原索引和克隆索引的写入状态,两个索引互不干涉,之后可以对克隆索引进行操作,而不会影响原始索引的数据。


开启索引

POST/index_test/_open

开启索引:恢复对索引进行操作,可逆,即可以随时关闭。当索引被关闭(锁定)时,无法对其执行写入或查询操作。


index索引的删

删除索引

DELETE/index_test

删除索引是一个不可逆操作,谨慎谨慎再谨慎!!!当执行这个请求时,将永久删除该索引以及其中包含的所有数据。


关闭索引

POST/index_test/_close

关闭索引之后不可以对索引进行操作,但是是可逆的,即可以随时打开,当索引被关闭(锁定)时,无法对其执行写入或查询操作。


index索引的改

清除索引缓存

POST/index_test/_cache/clear

清除索引的缓存通常用于释放系统内存或在特定情况下强制刷新索引的缓存。这可以在需要时用于确保索引的查询性能或确保查询结果的准确性。清除索引的缓存可能会导致查询性能下降,因为查询将不再从缓存中获取结果,而需要重新计算。


更新索引信息

PUT/index_test/_settings
{
  "index" : {
    "number_of_replicas" : 2
  }
}

这次body的内容解释如下:

  • index.number_of_replicas: 设置默认索引副本个数,默认为1个副本。

这里还另外介绍一个知识:index.number_of_shards:默认索引分片个数,默认为1片。

索引分片对ES的查询性能有很大的影响。1个副本是指index.number_of_shards的一个完全拷贝;如果有5个主分片1个副本分片,即总分片数为10。


刷新索引

GET/_refresh

使用 _refresh 请求来强制执行刷新,以便最新的数据对搜索结果立即可见。在 es中,数据写入操作通常不会立即对搜索结果生效,而是会在稍后自动进行刷新。


默认情况下,Elasticsearch 每秒定期刷新索引,但仅限于过去 30 秒内收到一个或多个搜索请求的索引。 ——官网

index索引的查

分析索引磁盘使用情况

POST/index_test/_disk_usage?run_expensive_tasks=true

可以获得关于 “index_test” 索引磁盘使用情况的信息,以便监视索引的存储需求。请注意,运行可能消耗资源的任务可能会对 Elasticsearch 节点的性能产生一定的影响。这个一般在工作中很少用到,可以了解一下。


查看索引是否存在

HEAD/index_test

HEAD 请求只返回请求资源的元数据,而不返回实际的内容。当执行 HEAD /index_test 请求时,Elasticsearch会检查名为 “index_test” 的索引是否存在。如果该索引存在,服务器将返回一个包含响应标头信息但没有主体内容的响应。这可以用于快速检查索引是否存在,而不必获取其全部内容。

这对于执行索引存在性检查以及执行某些轻量级操作非常有用,因为它不会返回实际的数据,从而降低了网络传输的开销。

es修改已存在索引分片 es怎么删除索引下的数据_es修改已存在索引分片

获取索引信息

GET/index_test

这个请求会返回 “index_test” 索引中的索引相关数据,以供进一步的查询、分析或展示。例如aliases(别名信息),mappings(字段信息),settings(索引信息)。


例如上面setting信息返回的意思如下:

设置项

描述

“routing.allocation.include”

索引的数据分配策略

“number_of_shards”

主分片数量

“provided_name”

索引的名称

“creation_date”

索引的创建日期

“number_of_replicas”

副本数量

“uuid”

索引的唯一标识符

“version.created”

索引的创建版本

获取索引分片信息

GET/index_test/_shard_stores

此请求将返回关于索引分片在各个节点上存储情况的详细信息。这些信息有助于了解索引分片在节点上的分布情况以及有关节点的属性和角色的信息。这对于监视和管理 Elasticsearch 索引和分片有用。但是工作中不常用,了解即可。


获取索引统计信息

GET/index_test/_stats

这个请求通常用于监视索引的性能和状态,以便进行性能优化和故障排除。响应中包含的信息有助于了解索引的健康状况和性能特征。但是工作中不常用,了解即可。


本节课程主要覆盖了ES索引操作的几个关键API,这是我们在工作和学习中频繁运用的核心功能。我们重点关注了对index索引的增、删、改、查等关键操作。通过合理运用这些API,我们可以高效地管理和操控索引,以满足各种类型的数据存储和检索需求。在实际操作过程中,请务必按照课程中所提供的API逐步操作,仅观看教程无法有效掌握相关技能。试读环节到此结束,下一篇文章仍将有限时开放的试读环节。接下来我们将深入了解ES的字段类型——mapping。期待下一节课程与大家再次相见。