建立索引
我们知道,我们在想索引插入数据的时候,索引可以自动创建并创建映射,如果我们需要,我们可以对索引的建立过程做更多的控制:
- 设置索引的分片和复制信息。
- 配置映射信息。
我们可以手动创建索引,在请求体里面传入设置或类型映射。
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" : { }
}
}
}