0


Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)

在这里插入图片描述

❤️ 个人主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:大数据核心技术从入门到精通

文章目录


大家好,我是水滴~~

本篇文章主要介绍 Elasticsearch 关于索引、映射和文档的管理。每个请求都会有配套示例,可以当成工具书查看。

一、索引管理

1. 创建索引

创建一个索引,使用的请求为

PUT /<index>

,其中

<index>

为索引名称。同时,还可以指定如下内容:索引的设置

settings

、索引中字段的映射

mappings

、索引的别名

aliases

下面通过一些示例来演示如何创建索引:

创建一个索引

请求:

PUT/my-index-000001

响应:

{"acknowledged":true,"shards_acknowledged":true,"index":"my-index-000001"}

其中

acknowledged

表示在超时之前,集群中是否成功创建了索引;而

shards_acknowledged

表示在超时之前,索引中的每个分区是否启动了所需数据的分区副本。

索引设置

创建索引时,可以对更改索引设置。

请求:

PUT/my-index-000002{"settings":{"index":{"number_of_shards":3,"number_of_replicas":2}}}
number_of_shards

为该索引的分区数,默认值为1;

number_of_replicas

为所有主分区的副本数,默认值为1。

可以简写:

PUT/my-index-000002{"settings":{"number_of_shards":3,"number_of_replicas":2}}

响应:

{"acknowledged":true,"shards_acknowledged":true,"index":"my-index-000002"}

更多索引设置,请访问:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-modules.html#index-modules-settings

映射字段

创建索引时,可以映射字段。

请求:

PUT/my-index-000003{"mappings":{"properties":{"field1":{"type":"boolean"},"field2":{"type":"text"}}}}

响应:

{"acknowledged":true,"shards_acknowledged":true,"index":"my-index-000003"}

别名

创建索引时,还可以为该索引设置别名,并且可以添加多个别名。

请求:

PUT/my-index-000004{"aliases":{"alias_1":{}}}

响应:

{"acknowledged":true,"shards_acknowledged":true,"index":"my-index-000004"}

2. 获取索引

获取一个索引,可以使用

GET /<target>

请求,其中

<target>

为索引名称。

请求:

GET/my-index-000003

响应:

{"my-index-000003":{"aliases":{},"mappings":{"properties":{"field1":{"type":"boolean"},"field2":{"type":"text"}}},"settings":{"index":{"routing":{"allocation":{"include":{"_tier_preference":"data_content"}}},"number_of_shards":"1","provided_name":"my-index-000003","creation_date":"1672816886070","number_of_replicas":"1","uuid":"J50MtHoeTa-2T6ugNxIQ7Q","version":{"created":"7120199"}}}}}

3. 删除索引

删除索引同时也会删除其文档、分区和元数据。可以使用

DELETE /<index>

请求,其中

<index>

为索引名称。

请求:

DELETE/my-index-000004

响应:

{"acknowledged":true}

4. 判断索引是否存在

可以使用

HEAD <target>

请求来检查索引是否存在,其中

<target>

为索引名或别名。

请求:

HEAD/my-index-000003

存在 - 响应:

200-OK

不存在 - 响应:

{"statusCode":404,"error":"Not Found","message":"404 - Not Found"}

二、映射管理

1. 获取映射

可能通过

GET /<target>/_mapping

请求来查询一个索引的映射,其中

<target>

为索引名称。

请求:

GET/my-index-000003/_mapping

响应:

{"my-index-000003":{"mappings":{"properties":{"field1":{"type":"boolean"},"field2":{"type":"text"}}}}}

如果索引没有添加映射字段,结果中的

mappings

后面为空。

2. 添加映射字段

我们知道,创建索引时可以添加映射字段,如果创建完索引再添加别的索引,可以使用

PUT /<target>/_mapping

命令,其中

<target>

为索引名称。

请求:

PUT/my-index-000003/_mapping
{"properties":{"field3":{"type":"keyword"},"field4":{"type":"text"}}}

响应:

{"acknowledged":true}

三、文档管理

1. 创建文档

创建文档有多种方式:

POST /<target>/_doc/

通过该请求可以创建一个文档,文档ID由 Elasticsearch 自动分配。其中

<target>

为索引名称

请求:

POST/my-index-000003/_doc
{"field1":true,"field2":"第一个","field3":"1","field4":"第一个field4"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"WETPnoUBbyDvl79vwHTp","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":8,"_primary_term":1}

通过响应结果可以看出,该结果为

created

操作,分配的文档ID

WETPnoUBbyDvl79vwHTp

,版本号为

1

POST /<target>/_create/<_id>

如果想要指定文档ID,可以使用该请求,其中

<target>

为索引名称,

<_id>

为指定的文档ID。注:如果文档 ID 已存在,则执行失败。

请求:

POST/my-index-000003/_create/2{"field1":true,"field2":"第二个","field3":"2","field4":"第二个field4"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":9,"_primary_term":1}

PUT /<target>/_create/<_id>

也可以使用该

PUT

方法来创建文档,效果与

POST /<target>/_create/<_id>

一样。

请求:

PUT/my-index-000003/_create/3{"field1":false,"field2":"第三个","field3":"3","field4":"第三个field4"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"3","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":10,"_primary_term":1}

PUT /<target>/_doc/<_id>

该方式可以指定文档ID,其中

<target>

为索引名称,

<_id>

为指定的文档ID

请求:

PUT/my-index-000003/_doc/4{"field1":false,"field2":"第四个","field3":"4","field4":"第四个field4"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":11,"_primary_term":1}

如果检测到该文档ID已存在,会覆盖原内容,并且版本

+1

请求:

PUT/my-index-000003/_doc/4{"field1":false,"field2":"第四个_2","field3":"4","field4":"第四个field4_2"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":12,"_primary_term":1}

从响应结果可以看出是

updated

操作,并且版本升级到了

2

2. 修改文档

修改文档可以使用

POST /<index>/_update/<_id>

方法,该修改可以指定字段进行局部更新

POST /<index>/_update/<_id>

更新文档字段值

可以局部更新指定字段的值。注意:更新的字段需要在

doc

对象下。

请求:

POST/my-index-000003/_update/4{"doc":{"field2":"第四个_4","field4":"第四个field4_4"}}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":4,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":14,"_primary_term":1}

添加文档字段

为该文档添加一个新的字段,并指定字段值。

请求:

POST/my-index-000003/_update/4{"script":"ctx._source.new_field = 'new_field_value'"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":12,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":22,"_primary_term":1}

删除文档字段

为该文档删除一个指定字段。

请求:

POST/my-index-000003/_update/4{"script":"ctx._source.remove('new_field_value')"}

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":13,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":23,"_primary_term":1}

3. 获取文档

获取文档有两种方式

GET <index>/_doc/<_id>

该方法获取文档的详细数据信息

请求:

GET/my-index-000003/_doc/4

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"4","_version":13,"_seq_no":23,"_primary_term":1,"found":true,"_source":{"field1":false,"field2":"第四个_2","field3":"4","field4":"第四个field4_2","new_field":"new_field_value"}}

GET <index>/_source/<_id>

该方法只获取文档字段数据信息

请求:

GET/my-index-000003/_source/4

响应:

{"field1":false,"field2":"第四个_2","field3":"4","field4":"第四个field4_2","new_field":"new_field_value"}

4. 判断文档是否存在

判断文档是否存在有两个方式,他们的效果是一样的

  • HEAD <index>/_doc/<_id>
  • HEAD <index>/_source/<_id>

请求:

HEAD/my-index-000003/_doc/4

响应(存在):

200-OK

请求:

HEAD/my-index-000003/_source/5

响应(不存在):

{"statusCode":404,"error":"Not Found","message":"404 - Not Found"}

5. 删除文档

可以使用

DELETE /<index>/_doc/<_id>

方法来删除指定文档。删除会将该文档标记为已删除,并且版本号

+1

请求:

DELETE/my-index-000003/_doc/3

响应:

{"_index":"my-index-000003","_type":"_doc","_id":"3","_version":2,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":26,"_primary_term":1}

四、总结

  • PUT /<index> 创建索引
  • GET /<target> 获取索引
  • DELETE /<index> 删除索引
  • HEAD <target> 判断索引是否存在
  • GET /<target>/_mapping 获取映射
  • PUT /<target>/_mapping 修改映射字段
  • POST /<target>/_doc/ 创建文档
  • POST /<target>/_create/<_id> 创建文档
  • PUT /<target>/_create/<_id> 创建文档
  • PUT /<target>/_doc/<_id> 创建/覆盖文档
  • POST /<index>/_update/<_id> 更新文档
  • GET <index>/_doc/<_id> 获取文档
  • GET <index>/_source/<_id> 获取文档
  • HEAD <index>/_doc/<_id> 判断文档是否存在
  • HEAD <index>/_source/<_id> 判断文档是否存在
  • DELETE /<index>/_doc/<_id> 删除文档

系列文章

🔥 Elasticsearch 核心技术(一):Elasticsearch 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用
🔥 Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)

热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_67276852/article/details/128648993
版权归原作者 水滴技术 所有, 如有侵权,请联系我们删除。

“Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)”的评论:

还没有评论