专栏首页大数据学习笔记Elasticsearch 7.x:2、索引管理

Elasticsearch 7.x:2、索引管理

2.1 索引名规范

索引命名有如下限制:

  • 仅限小写字母
  • 不能包含\/*?"<>|、#以及空格符等特殊符号
  • 从7.0版本开始不再包含冒号
  • 不能以-_+开头
  • 不能超过255个字节(注意它是字节,因此多字节字符将计入255个限制)

2.2 新建索引

(1)索引名小写

PUT test
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test"
}

(2)索引名不能包含大些字母

PUT Blog

相应结果:

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

(3)重复创建索引

PUT test

相应结果:

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

2.3 索引配置

创建索引时,可以制定相关设置,比如设置索引的分片数number_of_shards和副本数number_of_replicas

PUT blog
{
    "settings" : {
        "index" : {
            "number_of_shards" : 2,
            "number_of_replicas" : 2
        }
    }
}

也可以简化为

PUT blog
{
    "settings" : {
        "number_of_shards" : 2,
        "number_of_replicas" : 2
    }
}

也就是说,不必在settings部分中明确指定索引部分。

相应结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "blog"
}

2.4 查看索引

(1)查看制定索引

GET blog

相应结果:

{
  "blog" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1547012455291",
        "number_of_shards" : "2",
        "number_of_replicas" : "2",
        "uuid" : "RorVlzACQIOpGDCW9LJ1cA",
        "version" : {
          "created" : "6050499"
        },
        "provided_name" : "blog"
      }
    }
  }
}

(2)查看索引列表

GET /_cat/indices?v

相应结果如下,可以看到两个刚刚创建的索引,.kibana_1是Kibana自带样例索引。

health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   blog      RorVlzACQIOpGDCW9LJ1cA   2   2          0            0       522b           522b
green  open   .kibana_1 vfaeT7wQSgyxXOlZioCFDQ   1   0          3            0     11.9kb         11.9kb
yellow open   test      k4WAeNOqSpGzQbO3euWy2w   1   1          0            0       230b           230b

需要注意:我们新建的索引,默认分片和副本都是1。

(3)判定索引是否存在

HEAD blog

相应结果:

200 - OK

2.5 更新副本数

PUT blog/_settings
{
  "number_of_replicas": 1
}

相应结果:

{
  "acknowledged" : true
}

2.6 查看索引配置信息

GET blog/_settings

相应结果:

{
  "blog" : {
    "settings" : {
      "index" : {
        "creation_date" : "1547012455291",
        "number_of_shards" : "2",
        "number_of_replicas" : "1",
        "uuid" : "RorVlzACQIOpGDCW9LJ1cA",
        "version" : {
          "created" : "6050499"
        },
        "provided_name" : "blog"
      }
    }
  }
}

2.7 删除索引

可以直接使用DELETE命令删除索引

DELETE test

相应结果:

{
  "acknowledged" : true
}

2.8 索引的关闭与打开

一个关闭的索引几乎不占用系统资源。我们可以临时关闭某个索引,在需要时再重新打开该索引。 (1)关闭blog

POST blog/_close

相应结果:

{
  "acknowledged" : true
}

(2)查看索引

GET /_cat/indices?v

相应结果:

health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
       close  blog      RorVlzACQIOpGDCW9LJ1cA                                                          
green  open   .kibana_1 vfaeT7wQSgyxXOlZioCFDQ   1   0          3            0     11.9kb         11.9kb

(3)重新打开blog

POST blog/_open

相应结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true
}

2.9 指定type的mapping

创新索引时,允许提供一个type的映射。

创新创建索引test,并制定默认_doc类型的mappings

PUT test
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "_doc" : {
            "properties" : {
                "field1" : { "type" : "text" }
            }
        }
    }
}

相应结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test"
}

2.10 索引别名

索引别名不仅仅可以关联一个索引,它能聚合多个索引。此外,一个别名也可以与一个过滤器相关联, 这个过滤器在搜索和路由的时候被自动应用。

(1)创建多个索引

PUT index1
PUT index2

(2)创建index1的别名alias1

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "index1",
        "alias": "alias1"
      }
    }
  ]
}
{
  "acknowledged" : true
}

说明:此时别名alias1和index1一对一。

(3)添加多个索引的别名

POST _aliases
{
  "actions": [
    {
      "add": {
        "indices": ["index2","test"],
        "alias": "alias1"
      }
    }
  ]
}
{
  "acknowledged" : true
}

说明:我们是不能对alias1进行写操作,当有多个索引时的别名,不能区分到底操作哪一个索引。

(4)移除别名

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "test",
        "alias": "alias1"
      }
    }
  ]
}
{
  "acknowledged" : true
}

(5)查看别名

GET alias1
{
  "index1" : {
    "aliases" : {
      "alias1" : { }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1547013859010",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "sbbArnOvTYqf07rXlTpFtA",
        "version" : {
          "created" : "6050499"
        },
        "provided_name" : "index1"
      }
    }
  },
  "index2" : {
    "aliases" : {
      "alias1" : { }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1547013863297",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "qqRkUXOcQfuBTf1eBqvMPA",
        "version" : {
          "created" : "6050499"
        },
        "provided_name" : "index2"
      }
    }
  }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中文分词算法:逆向最大匹配法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    程裕强
  • Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.8 HQL:排序)(草稿)

    第11章 Hive:SQL on Hadoop 11.8 HQL:排序 11.8.1 order by Hive 中的 order by与SQL 中的order...

    程裕强
  • TensorFlow学习笔记:3、TensorFlow基本概念

    TensorFlow学习笔记:3、TensorFlow基本概念 3.1 计算图与operation Tensor(张量)意味着N维数组,Flow(流)意味着基于...

    程裕强
  • Elasticsearch 实战案例(索引切分、模板、别名、数据迁移)

    基于ELK搭建的日志平台,前期匆忙建设过程中一些参数和设计未做过多的考虑,上线后就需要不断根据实际情况做调整,而一些调整限于ELK的一些特性,一旦操作不当就会出...

    高广超
  • 代码生成利器:IDEA 强大的 Live Templates!

    Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 ...

    macrozheng
  • Matlab系列之脚本与函数M文件与函数句柄

    从Matlab篇章的开始到现在,已经讲了一些操作的基础知识,其实和很多语言都有一定的相似之处,接下来几篇打算分享一下关于Matlab编程的一些基础。

    狂人V
  • 【打卡贴】(No.008)字符串转整数 (atoi)

    该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部...

    PM小王
  • Kubernetes 之APIServer组件简介

    k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据...

    菲宇
  • JavaScript秘密笔记 第三集

    什么是: 在开始正式执行程序前,引擎会将var声明的变量和function声明的函数,提前到*当前作用域*的顶部,集中创建。

    李才哥
  • Android 快速解析xml

    相信我们Android开发和后台请求回来的数据大部分都是json格式 但是如果后台返回给我们的数据时xml格式的怎么办呢 没错你可以选择SAX解析、PULL...

    longzeqiu

扫码关注云+社区

领取腾讯云代金券