q29191 发表于 2017-5-21 09:22:39

Elasticsearch模块功能之-索引模板(Index templates)

  Elasticsearch模块功能之-索引模板(Index templates)
索引可使用预定义的模板进行创建,这个模板称作Index templates。模板设置包括settings和mappings,通过模式匹配的方式使得多个索引重用一个模板,例如:
定义模板:
 
 view plaincopy 



[*]curl -XPUT localhost:9200/_template/template_1 -d '  
[*]{  
[*]    "template" : "te*",  
[*]    "settings" : {  
[*]        "number_of_shards" : 1  
[*]    },  
[*]    "mappings" : {  
[*]        "type1" : {  
[*]            "_source" : {"enabled" : false }  
[*]        }  
[*]    }  
[*]}  
[*]'  

  


 
上述定义的模板template_1将对用te开头的新索引都是有效。
 
模板中也可以包含别别名的定义,如下:
 
 view plaincopy 



[*]curl -XPUT localhost:9200/_template/template_1 -d '  
[*]{  
[*]    "template" : "te*",  
[*]    "settings" : {  
[*]        "number_of_shards" : 1  
[*]    },  
[*]    "aliases" : {  
[*]        "alias1" : {},  
[*]        "alias2" : {  
[*]            "filter" : {  
[*]                "term" :{"user" : "kimchy" }  
[*]            },  
[*]            "routing" :"kimchy"  
[*]        },  
[*]        "{index}-alias" : {}   
[*]    }  
[*]}  

  


 
 
删除模板:
         使用模板名称对模板进行删除.
 view plaincopy 



[*]curl -XDELETE localhost:9200/_template/template_1  

 
同样也可以查看定义的模板:
 
 view plaincopy 



[*]curl -XGET localhost:9200/_template/template_1  

  


 
 
多个索引模板:
当存在多个索引模板时并且某个索引两者都匹配时,settings和mpapings将合成一个配置应用在这个索引上。合并的顺序可由索引模板的order属性来控制。
 
 view plaincopy 



[*]curl -XPUT localhost:9200/_template/template_1 -d '  
[*]{  
[*]    "template" : "*",  
[*]    "order" : 0,  
[*]    "settings" : {  
[*]        "number_of_shards" : 1  
[*]    },  
[*]    "mappings" : {  
[*]        "type1" : {  
[*]            "_source" : {"enabled" : false }  
[*]        }  
[*]    }  
[*]}  
[*]'  
[*]==================================================================  
[*]curl -XPUT localhost:9200/_template/template_2 -d '  
[*]{  
[*]    "template" : "te*",  
[*]    "order" : 1,  
[*]    "settings" : {  
[*]        "number_of_shards" : 1  
[*]    },  
[*]    "mappings" : {  
[*]        "type1" : {  
[*]            "_source" : {"enabled" : true }  
[*]        }  
[*]    }  
[*]}  
[*]'  

 
上述order为1的配置将覆盖order为0的配置,最终索引的配置source的enabled为true。
 
模板配置文件:
         除了以上方式,索引模板也可以在文件中进行配置。索引模板的配置文件需要在每个
主节点的config目录下,目录结构为:config/templates/template_1.json,temp
late_1.json的样例如下:
 
 view plaincopy 



[*]{  
[*]  "template-logstash" : {  
[*]    "template" : "logstash*",  
[*]    "settings" : {  
[*]      "index.number_of_shards" : 5,  
[*]      "number_of_replicas" : 1,  
[*]      "index" : {  
[*]        "store" : {  
[*]          "compress" : {  
[*]            "stored" : true,  
[*]            "tv": true  
[*]          }  
[*]        }  
[*]      }  
[*]    },  
[*]    "mappings" : {  
[*]      "_default_" : {  
[*]        "properties" : {  
[*]          "dynamic" : "true",  
[*]        },  
[*]      },  
[*]      "loadbalancer" : {  
[*]        "_source" : {  
[*]          "compress" : true,  
[*]        },  
[*]        "_ttl" : {  
[*]          "enabled" : true,  
[*]          "default" : "10d"  
[*]        },  
[*]        "_all" : {  
[*]          "enabled" : false  
[*]        },  
[*]        "properties" : {  
[*]          "@fields" : {  
[*]            "dynamic" : "true",  
[*]            "properties" : {  
[*]              "client" : {  
[*]                "type" : "string",  
[*]                "index" : "not_analyzed"  
[*]              },  
[*]              "domain" : {  
[*]                "type" : "string",  
[*]                "index" : "not_analyzed"  
[*]              },  
[*]              "oh" : {  
[*]                "type" : "string",  
[*]                "index" : "not_analyzed"  
[*]              },  
[*]              "responsetime" : {  
[*]                "type" : "double",  
[*]              },  
[*]              "size" : {  
[*]                "type" : "long",  
[*]                "index" : "not_analyzed"  
[*]              },  
[*]              "status" : {  
[*]                "type" : "string",  
[*]                "index" : "not_analyzed"  
[*]              },  
[*]              "upstreamtime" : {  
[*]                "type" : "double",  
[*]              },  
[*]              "url" : {  
[*]                "type" : "string",  
[*]                "index" : "not_analyzed"  
[*]              }  
[*]            }  
[*]          },  
[*]          "@source" : {  
[*]            "type" : "string",  
[*]            "index" : "not_analyzed"  
[*]          },  
[*]          "@timestamp" : {  
[*]            "type" : "date",  
[*]            "format" : "dateOptionalTime"  
[*]          },  
[*]          "@type" : {  
[*]            "type" : "string",  
[*]            "index" : "not_analyzed",  
[*]            "store" : "no"  
[*]          }  
[*]        }  
[*]      }  
[*]    }  
[*]  }  
[*]}  

  


 
 
【参考】:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html
 
 
from  http://blog.csdn.net/changong28/article/details/38423339
页: [1]
查看完整版本: Elasticsearch模块功能之-索引模板(Index templates)