在上一篇中,我们针对索引 API 相关管理 API 进行了总结,包括常见的 CRUD
及 Elasticsearch 特殊的 API。其中,我们提到,在 Elasticsearch 中,没有直接针对索引本身的“修改” API,而只能修改索引相关的属性。本篇,将介绍与属性相关的 API。
索引的属性主要包括:Mapping
(映射)、Alias
(别名)、Setting
(设置)。对索引的修改,也多是针对此三种属性进行的。
# 映射管理
映射相关的 API 包括有查询映射、修改映射,以及特殊的查询字段映射及查询类型存在。
查询映射
GET /_mapping GET /<target>/_mapping
使用
GET
方法,API 关键字为_mapping
,中间参数是索引名字,可以用通配符代表所有索引,或者用逗号分隔多个索引名字,如果不指定,代表查询所有索引的映射。修改映射
PUT /my-index-000001/_mapping { "properties": { "email": { "type": "keyword" } } }
使用
PUT
方法,中间参数是索引名字,可以用通配符代表所有索引,也可以用逗号分隔多个索引名字,请求体中为要修改的映射的字段。要注意,此方法用于添加新的字段以及对已有字段添加新的属性,而不是真的修改已有字段的属性。
如果想要修改一个已有字段的属性,官方推荐方式如下:
1.创建一个正确的新索引
2.把数据重索引到新索引
3.删除旧索引
如果想要修改一个已有字段的名字,官方推荐方法如下:
添加一个别名来替代字段名字
查询字段映射
此 API 在“查询映射”的基础,查询更细的“字段”的映射。
GET /_mapping/field/<field> GET /<target>/_mapping/field/<field>
方法为
GET
,API 关键字为/_mapping/field
。参数为索引名字和字段名字。如果不指定索引,代表查询所有索引下相应字段的映射。在 Elasticsearch 中,很多名字的查询都支持模糊查询,所以这里的索引名字、字段名字,可以是模糊查询(如:acc*
)。查询类型存在
从 7.0.0 版本开始,此 API 不再被推荐。
此 API 主要是用于查询映射的类型是否存在。
HEAD /<index>/_mapping/<type>
方法为
HEAD
,API 关键字为_mapping
,参数为索引名字和类型。如果查到有,响应码为200
,没查到,响应码为404
。
# 别名管理
别名相关 API 主要有创建别名、修改别名、查询别名和删除别名。
别名 API
此 API 可以通过在请求体指定不同的
action
实现对别名的创建、删除和修改(通过在一个请求中删除的同时又创建),还能使用日期数学,实现动态的别名创建。POST /_aliases { "actions" : [ { "add" : { "index" : "my-index-000001", "alias" : "alias1" } } ] }
创建、修改别名
此 API 可以创建或修改索引的别名。
PUT /<index>/_alias/<alias> POST /<index>/_alias/<alias> PUT /<index>/_aliases/<alias> POST /<index>/_aliases/<alias>
方法支持
PUT
和POST
,API 中关键字为_alias
或_aliases
。参数分别代表索引名字和别名。如果进一步在请求体中使用过滤器,还能实现针对指定数据添加别名。
查询索引别名
此 API 可以查询索引别名。
GET /_alias GET /_alias/<alias> GET /<index>/_alias/<alias>
方法为
GET
,API 中关键字为_alias
。参数分别代表索引名字和别名,如果索引名字不指定,就代表所有索引。索引名字也可以使用通配符代表所有索引。删除索引别名
此 API 可以删除索引别名。
DELETE /<index>/_alias/<alias> DELETE /<index>/_aliases/<alias>
方法为
DELETE
,API 中关键字为_alias
或_aliases
。参数分别为索引名字和别名。索引名字也可以使用通配符代表所有索引。
# 索引设置
设置相关 API 包括查询设置、修改设置以及特殊的分析 API。
查询设置
此 API 查询索引的设置(
setting
)。GET /<target>/_settings GET /<target>/_settings/<setting>
方法为
GET
,API 中关键字为_settings
。参数分别为索引名字和设置名字。不指定索引名字,就代表所有索引,不指定设置名字,就代表所有设置。索引名字和设置名字都支持通配符,通配符代表所有。修改设置
此 API 修改动态索引设置。(一定要注意的是,只有符合 Elasticsearch 规定的动态索引设置才能在索引创建后修改)
PUT /my-index-000001/_settings { "index" : { "number_of_replicas" : 2 } }
方法为
PUT
,API 中关键字为_settings
。参数为索引名字。请求体中为要修改的设置。分析 API
此 API 用于分析文本。(从学到这里的程度看,和设置本身关系并不大,因为此 API 是用于直接指定分析器对文本进行分析,或者在索引上进行分析。可能学到后面才能理解官方将其放在这里的原因)
GET /_analyze POST /_analyze GET /<index>/_analyze POST /<index>/_analyze
方法为
GET
或POST
,API 中关键字为_analyze
,参数为索引名字。示例:
GET /_analyze { "analyzer" : "standard", "text" : "Quick Brown Foxes!" }
以上,就是索引本身属性相关的 API,包括映射、别名、设置。