ElasticSearch-基础-04-索引_名词
2025-01-22 08:19:30    866 字   
This post is also available in English and alternative languages.

ElasticSearch版本:6.5.0(点击跳转官方文档)

这个索引,就像是传统关系型数据库中的数据库,在 Elasticsearch 中它是相关文档存储的地方。

在实际应用中,不宜向单个索引持续写数据,直到它的分片巨大无比。 巨大的索引在数据老化后会难以删除。以 _id 为单位删除文档不会立即释放空间,删除的doc(文档)只有在Lucene分段合并时才会真正从磁盘中删除。 如果手动触发分段合并,会引起较高的I/O压力;并且可能会因为分段巨大导致合并过程中存储不足。

建议周期性创建新索引。

例如:
有一个索引 advertisement,可以将其命名为 advertisement_20200201。 按照这个格式,每天创建一个新索引。 然后创建一个名为 advertisement 的别名,来关联这些索引。
这样对于业务来说,读取时使用的名称不变,当需要删除数据的时候,可以直接删除整个索引。


1. 索引别名

索引别名就像一个代理,它可以指向一个或多个索引。

可以用于实现索引分组,或者索引间的无缝切换

碍于篇幅,别名后面专门说


2. 创建索引

使用如下的命令

1
2
3
4
5
6
put /demo/testDate/1
{
"name":"cyx1",
"age":"22",
"address":"nanjing"
}

如果URL中的索引不存在,es会为我们自动创建索引。

还可以通过下面的命令来创建索引。

1
PUT /blog

响应报文

1
2
3
4
5
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "blog"
}

我们看下head插件中的结果:

head-信息-1

很多时候,需要自定义设置(设置索引结果、分片数目)时,需要手动创建索引。


3. 手动创建索引

如果输错了单词,却被es自动创建了索引,这是很麻烦的。

我们可以通过修改修改elasticsearch.yml配置文件,来关闭自动创建索引功能。

1
action.auto_create_index: false

修改完上面的配置以后,我们再尝试创建一个文档,指定新的index名称

1
2
3
4
5
6
put /blog2/blogData/1
{
"name":"cyx111",
"age":"11",
"address":"nanjing11"
}

响应报文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index",
"resource.type": "index_expression",
"resource.id": "blog2",
"index_uuid": "_na_",
"index": "blog2"
}
],
"type": "index_not_found_exception",
"reason": "no such index",
"resource.type": "index_expression",
"resource.id": "blog2",
"index_uuid": "_na_",
"index": "blog2"
},
"status": 404
}

通过响应报文发现,es已经不再为我们自动创建索引了。

我们通过指定命令创建索引

1
2
3
4
5
6
7
PUT /blog2
{
"settings":{
"number_of_shards":"2",
"number_of_replicas":"2"
}
}

指定分片数量2,,副本数量2

响应报文

1
2
3
4
5
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "blog2"
}

我们看下head上面的信息:

head-信息-2

没问题,已经创建了blog2索引


4. 删除索引

执行以下命令

1
DELETE /blog2

响应报文

1
2
3
{
"acknowledged": true
}

这样子,上面创建的索引就被删除了。

删除索引也可以使用curl命令,如:

1
curl -XDELETE 'http://127.0.0.1:9200/testdata'

5. Reference

  • 《Elasticsearch源码解析与优化实战》