Elastcisearch:静态模板配置

使用模板可以约束索引中的字段类型。
注意:直接修改mapping的优先级>索引template,以下说明基于elasticsearch-5.1.1版本。

先创建一个静态模板示例

PUT /_template/sys_log
{
  "order": 1,
  "template": "sys_log_*",
  "settings": {
    "number_of_replicas": "0",
    "number_of_shards": "5",
    "index": {
      "refresh_interval": "5s"
    }
  },
  "mappings": {
    "_default_": {
      "dynamic": "strict",
      "properties": {
        "id": {
          "type": "keyword"
        },
        "username": {
          "type": "keyword"
        },
        "interest": {
          "analyzer": "standard",
          "type": "text"
        },
        "dateN": {
          "type": "integer"
        },
        "timestamp": {
          "type": "date"
        }
      }
    }
  },
  "aliases": {
  }
}

order

表示模板的优先级,当一个索引匹配到多个模板时,order值越大匹配优先级越高。order值默认为0

template

设置名称(适用正则表达式),表示命名规则与之匹配的所有索引都会使用此模板,以上例子中,所有名称以sys_log_开头索引都会自动匹配到这个模板。

settings

索引的配置信息,例如分片数、副本数,tranlog同步条件、refresh等

属性 说明
number_of_replicas 副本数
number_of_shards 分片数
index.refresh_interval fsync频率

mappings

  • _default_ 文档类型,可以根据实际情况自定义。表示对应文档类型下field的数据类型。如果想要一个索引中的所有文档类型都使用这个mappings配置,名称可配置为 _default_

  • dynamic 在索引文档时,对于不在mapping中的field,elastcisearch会使用什么策略进行动态映射,可以通过这个属性进行配置,只可以使用elastcisearch中约定的值,如下

dynamic值 说明
true 在索引一个文档时,如果文档中有field不在mapping中,会自动映射类型,添加到mapping,并索引该字段
false 在索引一个文档时,如果文档中有field不在mapping中,不会添加到mapping,也不会索引该字段,但是会保存下来,在_source可以看到该字段,但该字段不能被搜索
strict 在索引一个文档时,如果文档中有field不在mapping中,会直接抛出异常,拒绝索引

查看模板

# 查看所有模板
GET /_template

# 查看具体模板
GET /_template/sys_log

删除模板

DELETE /_template/sys_log

你可能感兴趣的:(elasticsearch)