elasticsearch的索引(增删改查)管理

Posted 临江仙我亦是行人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch的索引(增删改查)管理相关的知识,希望对你有一定的参考价值。

1. 创建索引

# 语法
PUT /索引名/[类型名]/文档id
{
    请求体
}

可以通过 postman 发送请求,也可以通过 kibana 发送请求,由于 kibana 有提示,所以我们选择kibana

索引名不能有大写字母

PUT Book

{
  "error" : {
    "root_cause" : [
      {
        "type" : "invalid_index_name_exception",
        "reason" : "Invalid index name [Book], must be lowercase",
        "index_uuid" : "_na_",
        "index" : "Book"
      }
    ],
    "type" : "invalid_index_name_exception",
    "reason" : "Invalid index name [Book], must be lowercase",
    "index_uuid" : "_na_",
    "index" : "Book"
  },
  "status" : 400
}

索引名是唯一的,不能重复,重复创建会出错

{
  "error" : {
    "root_cause" : [
      {
        "type" : "resource_already_exists_exception",
        "reason" : "index [book/AlxnoOUPSPK_HBVPe1Qkwg] already exists",
        "index_uuid" : "AlxnoOUPSPK_HBVPe1Qkwg",
        "index" : "book"
      }
    ],
    "type" : "resource_already_exists_exception",
    "reason" : "index [book/AlxnoOUPSPK_HBVPe1Qkwg] already exists",
    "index_uuid" : "AlxnoOUPSPK_HBVPe1Qkwg",
    "index" : "book"
  },
  "status" : 400
}

创建索引请求,什么都不指定

PUT book

创建索引请求,指定字段的类型,创建规则

PUT book
{
    "mappings": {
        "properties":{
            "name": {
                "type": "text"
            },
            "author": {
                "type": "text"
            },
            "age": {
                "type": "long"
            },
            "birthday" :{
                "type": "date"
            }
        }
    }
}

索引创建成功后,可以向索引中写入文档

# 如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型
PUT book/_doc/1
{
    "name": "雪中悍刀行",
    "author": "烽火戏诸侯",
    "age": 30,
    "birthday": "2012-10-10"
}


PUT book/_doc/2
{
    "name": "徐晓",
    "author": "烽火戏诸侯",
    "age": 50,
    "birthday": "1970-01-11"
}

默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。

例如,关闭索引的写权限:

PUT book/_settings
{
  "blocks.write": true
}

关闭之后,就无法添加文档了。关闭了写权限之后,如果想要再次打开,方式如下:

PUT book/_settings
{
  "blocks.write": false
}

其他类似的权限有:

  • blocks.write
  • blocks.read
  • blocks.read_only

2. 查看索引

请求查看方式,可以通过 GET 请求获取具体的信息

GET book

GET book/_settings

也可以同时查看多个索引信息

GET book,test/_settings

也可以查看所有索引信息

GET _all/_settings

获取索引的健康值

GET _cat/health

获取版本信息

GET _cat/indices?v

3. 修改

索引创建好之后,可以修改其属性

例如修改索引的副本数

PUT book/_settings
{
  "number_of_replicas": 2
}

使用put覆盖修改(版本号会增加)基本已不再采用

PUT /test3/_doc/1
{
    "name": "大将军",
    "age": 45,
    "birthday": "1970-01-11"
}

使用post修改,doc是固定格式,本例只修改name字段

POST /test3/_doc/1/_update
{
    "doc":{
        "name": "北凉王"
    }
}

4. 删除索引

通过DELETE命令实现删除,根据你的请求判断是删除索引还是删除文档记录

DELETE book

删除一个不存在的索引会报错。

5. 索引打开/关闭

关闭索引:

一个关闭的索引几乎不占用系统资源,如果一个索引暂时不用,可以关闭它

POST book/_close

打开索引

POST book/_open

当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。

6. 复制索引

索引复制,只会复制数据,不会复制索引配置(新复制的索引book_new是1个分片1个副本,而book索引是1个分片2个副本,并没有把索引配置复制过去)

POST _reindex
{
  "source": {"index":"book"},
  "dest": {"index":"book_new"}
}

复制的时候,可以添加查询条件。

7. 索引别名

可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

将 add 改为 remove 就表示移除别名:

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

可以添加多个别名,也可以删除多个别名

查看某一个索引的别名:

GET /book/_alias

查看某一个别名对应的索引(book_alias 表示一个别名):

GET /book_alias/_alias

可以查看集群上所有可用别名:

GET /_alias

以上是关于elasticsearch的索引(增删改查)管理的主要内容,如果未能解决你的问题,请参考以下文章

操作ElasticSearch(增删改查)

ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程

(07)ElasticSearch 使用Kibana实现基增删改查

ElasticSearch01_简介安装es以及kibana详解倒排索引检索es基本信息增删改查文档

ElasticSearch01_简介安装es以及kibana详解倒排索引检索es基本信息增删改查文档

ElasticSearch01_简介详解倒排索引安装es以及kibana检索es基本信息增删改查文档