ElasticSearch学习笔记之十三 索引API

建立索引

我们知道,我们在想索引插入数据的时候,索引可以自动创建并创建映射,如果我们需要,我们可以对索引的建立过程做更多的控制:

  • 设置索引的分片和复制信息。
  • 配置映射信息。

我们可以手动创建索引,在请求体里面传入设置或类型映射。

PUT my_index
{
  "settings": {
        "number_of_shards" :   5,
        "number_of_replicas" : 1
    },
  "mappings": {
    "_doc": {
      "properties": {
        "text": {
          "type":        "text"
        }
      }
    }
  }
}

如果你想禁止自动创建索引,你 可以通过在 config/elasticsearch.yml的每个节点下添加下面的配置:

action.auto_create_index: false

索引名称不能使用大写字母,如果你试图创建一个大写字母索引,会出现下面错误

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

删除索引

用以下的请求来 删除索引:

DELETE /my_index

你也可以这样删除多个索引:

DELETE /index_one,index_two
DELETE /index_*

你甚至可以这样删除 全部 索引:

DELETE /_all
DELETE /*

用单个命令来删除所有数据可能会导致可怕的后果。如果你想要避免意外的大量删除, 你可以在你的 elasticsearch.yml 做如下配置:

action.destructive_requires_name: true

索引设置

Elasticsearch 允许我们配置索引的分片和副本。

配置项 说明
number_of_shards 每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
number_of_replicas 每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。

例如,我们可以创建只有 一个主分片,没有副本的小索引:

PUT /my_temp_index
{
    "settings": {
        "number_of_shards" :   1,
        "number_of_replicas" : 0
    }
}

然后,我们可以用 update-index-settings API 动态修改副本数:

PUT /my_temp_index/_settings
{
    "number_of_replicas": 1
}

查看索引配置

GET my_index/_settings

当然也支持多个操作

GET my_index,my_temp_index/_settings

索引映射

除了让elasticsearch自动映射以外,我们也可以指明索引映射。

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "text": {
          "type":        "text"
        }
      }
    }
  }
}

也可以查看映射

GET my_index/_mapping

索引的打开与关闭

我们可以关闭索引来禁止写入

POST my_index/_close

此时我们尝试操作,会得到一下错误:

{
  "error": {
    "root_cause": [
      {
        "type": "index_closed_exception",
        "reason": "closed",
        "index_uuid": "e4iIw6cnS-6XfQqx9YBM_g",
        "index": "my_index"
      }
    ],
    "type": "index_closed_exception",
    "reason": "closed",
    "index_uuid": "e4iIw6cnS-6XfQqx9YBM_g",
    "index": "my_index"
  },
  "status": 400
}

我们也可以开启被关闭的索引

POST my_index/_open

索引别名

elasticsearch 支持多索引进行别名操作,有两种方式管理别名: _alias 用于单个操作, _aliases 用于执行多个原子级操作。

创建索引 my_index_v1 ,然后将别名 my_index 指向它:

PUT /my_index_v1 
PUT /my_index_v1/_alias/my_index

你可以检测这个别名指向哪一个索引:

GET /*/_alias/my_index

或哪些别名指向这个索引:

GET /my_index_v1/_alias/*

两者都会返回下面的结果:

{
    "my_index_v1" : {
        "aliases" : {
            "my_index" : { }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43430036/article/details/83185655