备注:此内容为《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"

标签: none

添加新评论