es提供模板功能的出发点在哪里呢?作为NoSQL数据库,ES在数据入库前是不做模式设定的,也就是不限定数据字段。这对日志类型的数据来说,是个利好的场景。但是这种不设定模式的做法,有时有太过自由。有些业务场景,我们需要预先设定场的分词方式。这时固然可以使用映射解决。但是业务接入前要通知一下,先建个索引,想想有点不智能。有没有更灵活一点的做法呢?模板
模板的使用很简单,但是想用好,不出问题或者少出问题,得有一整套流程:
-
<李>
创建模板
<代码>旋度-XPUT localhost: 9200/_template/template_1 - d ' { “模板”:“te *”, "设置":{ “number_of_shards”: 1、 “number_of_replications”: 2 }, “映射”:{ 类型1:{ “_source”:{"启用":假} } } } ' 代码>李> <李>
查看模板
<代码>旋度xget localhost: 9200/_template/template_1 ?很代码>李> <李>
如果模板创建出的错,删除模板
<代码>旋度-XDELETE localhost: 9200/_template/template_1 代码>李> <李>模板建好后,要测试一下是否符合预期,添加一条数据
<代码>美元curl -XPUT ' http://localhost: 9200/template_test/微博/1“- d”{ “用户”:“kimchy”, “post_date”:“2009 - 11 - 15 t14:12:12”, “消息”:“尝试Elasticsearch” }”代码>李> <李>
查看集群的状态,如果分片副本设置错误,有可能集群变成黄色
<代码> curl xget ' http://localhost: 9200/_cluster/健康?漂亮=true”代码>李> <李>查看索引结构及数据样例
<代码> curl xget ' http://localhost: 9200/微博/_settings _mappings ?漂亮的 curl xget ' http://localhost: 9200/template_test/微博/1”代码>李>
经过后面这些验证,一般就能规避大多数问题了。