咱们已经经过索引一篇文档建立了一个新的索引 。
这个索引采用的是默认的配置,新的字段经过动态映射的方式被添加到类型映射。数据库
Elasticsearch 不要求你在使用一个索引前建立它。 对于日志记录类应用,依赖于自动建立索引比手动建立要更加方便。app
Logstash 使用事件中的时间戳来生成索引名。
默认天天被索引至不一样的索引中,所以一个 @timestamp 为 2014-10-01 00:00:01 的事件将被发送至索引 logstash-2014.10.01 中。
若是那个索引不存在,它将被自动建立。elasticsearch
一般咱们想要控制一些新建索引的设置(settings)和映射(mappings)。
也许咱们想要限制分片数为 1 ,而且禁用 _all 域。
索引模板能够用于控制何种设置(settings)应当被应用于新建立的索引:post
PUT /_template/my_logs #建立一个名为 my_logs 的模板。 { "template": "logstash-*", #将这个模板应用于全部以 logstash- 为起始的索引。 "order": 1, #这个模板将会覆盖默认的 logstash 模板,由于默认模板的 order 更低。 "settings": { "number_of_shards": 1 # 限制主分片数量为 1 。 }, "mappings": { "_default_": { "_all": { # 为全部类型禁用 _all 域。 "enabled": false } } }, "aliases": { "last_3_months": {} # 添加这个索引至 last_3_months 别名中。 } }
这个模板指定了全部名字以 logstash- 为起始的索引的默认设置,不论它是手动仍是自动建立的。 若是咱们认为明天的索引须要比今天更大的容量,咱们能够更新这个索引以使用更多的分片。ui
这个模板还将新建索引添加至了 last_3_months 别名中,然而从那个别名中删除旧的索引则须要手动执行。spa
删除指定的索引 DELETE /my_index 删除多个索引 DELETE /index_one,index_two DELETE /index_* DELETE /_all DELETE /*
可以用单个命令来删除全部数据可能会致使可怕的后果。
若是你想要避免意外的大量删除,
你能够在你的 elasticsearch.yml 作以下配置: action.destructive_requires_name: true
最重要的两个设置日志
咱们能够建立只有 一个主分片,没有副本的小索引code
PUT /my_temp_index { "settings": { "number_of_shards" : 1, "number_of_replicas" : 0 } }
咱们能够用 update-index-settings API 动态修改副本数blog
PUT /my_temp_index/_settings { "number_of_replicas": 1 }
类型 在 Elasticsearch 中表示一类类似的文档。
类型由 名称 —好比 user 或 blogpost —和 映射 组成。索引
映射, 就像数据库中的 schema ,描述了文档可能具备的字段或 属性 、
每一个字段的数据类型—好比 string, integer 或 date —以及Lucene是如何索引和存储这些字段的。
Elasticsearch 类型是 以 Lucene 处理文档的这个方式为基础来实现的。
一个索引能够有多个类型,这些类型的文档能够存储在相同的索引中。
Lucene 没有文档类型的概念,每一个文档的类型名被存储在一个叫 _type 的元数据字段上。 当咱们要检索某个类型的文档时,
Elasticsearch 经过在 _type 字段上使用过滤器限制只返回这个类型的文档。
Lucene 也没有映射的概念。 映射是 Elasticsearch 将复杂 JSON 文档 映射 成 Lucene 须要的扁平化数据的方式。
例如,在 user 类型中, name 字段的映射能够声明这个字段是 string 类型,而且它的值被索引到名叫 name 的倒排索引以前,须要经过 whitespace 分词器分析:
有两种方式管理别名: _alias 用于单个操做, _aliases 用于执行多个原子级操做。
咱们假设你的应用有一个叫 my_index 的索引。事实上, my_index 是一个指向当前真实索引的别名。真实索引包含一个版本号: my_index_v1 , my_index_v2 等等
PUT /my_index_v1 PUT /my_index_v1/_alias/my_index
查询索引别名指向的索引
GET /*/_alias/my_index
哪些别名指向这个索引
GET /my_index_v1/_alias/*
一个别名能够指向多个索引,因此咱们在添加别名到新索引的同时必须从旧的索引中删除它。这个操做须要原子化,这意味着咱们须要使用 _aliases 操做:
POST /_aliases { "actions": [ { "remove": { "index": "my_index_v1", "alias": "my_index" }}, { "add": { "index": "my_index_v2", "alias": "my_index" }} ] }