Elasticsearch黑鸟教程11:创建索引和索引模板
备注:此内容为《Elasticsearch黑鸟教程(入门系列)》之十一,修订于2020年12月13日。
1、索引
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品详情的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。索引类似于关系型数据库中Database的概念。
Elasticsearch可以把索引数据存放到一台服务器上,也可以sharding分片后存到多台服务器上。每个分片本身也是一个功能完善并且独立的"子索引",这个"子索引"可以被放置到集群中的任何节点上。
Elasticsearch的每个索引有一个或多个分片,每个分片可以有多个副本。
2、创建索引(设置分片和映射类型)
curl -X PUT -H 'Content-Type: application/json' 'localhost:9200/myindex' -d '{
"settings":{
"number_of_shards": 1,
"number_of_replicas" : 0
},
"mappings":{
"properties":{
"id":{
"type":"long"
},
"title":{
"type":"text"
},
"content":{
"type":"text"
},
"category":{
"type":"long"
},
}
}
}'
查看索引
curl 'localhost:9200/_cat/indices?v'
删除索引
curl -X DELETE 'localhost:9200/myindex?pretty'
索引模板
Elasticsearch 不要求你在使用一个索引前创建它。 对于日志记录类应用,依赖于自动创建索引比手动创建要更加方便。
Logstash 使用事件中的时间戳来生成索引名。 默认每天被索引至不同的索引中,因此一个 @timestamp 为 2014-10-01 00:00:01 的事件将被发送至索引 logstash-2014.10.01 中。 如果那个索引不存在,它将被自动创建。
通常我们想要控制一些新建索引的设置(settings)和映射(mappings),例如,我们想要限制分片数为1等等。如下所示:
curl -X PUT -H 'Content-Type: application/json' 'localhost:9200/_template/my_logs' -d '
{
"template": "logstash-*", #将这个模板应用于所有以 logstash- 为起始的索引。
"order": 1, #这个模板将会覆盖默认的 logstash 模板,因为默认模板的 order 更低。
"settings": {
"number_of_shards": 1 #限制主分片数量为 1 。
},
"aliases": {
"last_3_months": {} #添加这个索引至 last_3_months 别名中。
}
}
'
这个模板指定了所有名字以 logstash- 为起始的索引的默认设置,不论它是手动还是自动创建的。如果我们认为明天的索引需要比今天更大的容量,我们可以更新这个索引以使用更多的分片。这个模板还将新建索引添加至了 last_3_months 别名中,然而从那个别名中删除旧的索引则需要手动执行。
查看已经建好的索引模板的命令为:
curl -X GET "localhost:9200/_template/my_logs?pretty"