1、Bulk APIhtml
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html shell
The bulk API makes it possible to perform many index/delete operations in a single API call. This can greatly increate the indexing speed.app
The REST API endpoint is /_bulk ,and it expects the following JSON structure:curl
actiion_and_meta_data\n optional_source\n actiion_and_meta_data\n optional_source\n ... ... actiion_and_meta_data\n optional_source\n
The possible actions are index,create,delete and update.elasticsearch
2、Put Mappingide
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.htmlui
Put Mapping API 可以讓你爲存在的Index建立新的Type,或是爲存在的Type建立新的Fields。(The Put mapping API allows you to add a new type on an existing index,or new fields to an existing type)this
curl -XPUT 'http://localhost:9200/twitter' -d '{ "mappings": { "tweet": { "properties": { "message": { "type": "string" } } } } }' ==> 建立Index:twitter,建立Type:tweet,建立Fields:message curl -XPUT 'http://localhost:9200/twitter/_mapping/tweet' -d '{ "properties": { "user_name": { "type": "string" } } }' ==> 爲Type:tweet,新增Fields:user_name curl -XPUT 'http://localhost:9200/twitter/_mapping/user' -d '{ "properties": { "name": { "type": "string" } } }' ==> 爲Index:twitter,新增Type:user,和新的Fields:name
Multi-Index:
url
curl -XPUT 'http://localhost:9200/my_index' -d '{ "mappings": { "user": { "properties": { "name": { "properties": { "first": { "type": "string" } } }, "user_id": { "type": "string", "index": "not_analyzed" } } } } }' ==>建立Index:my_index,並擁有一個Type:user。Type:user擁有兩個Fields:name,first curl -XPUT 'http://localhost:9200/my_index/_mapping/user' -d '{ "properties": { "name": { "properties": { "last": { ==> 在存在的Fields新增properties "type": "string" } } }, "user_id": { "type": "string", "index": "not_analyzed", "ignore_above": 100 ==> 更新原有的ignore_above從0到100 } } }' ==>
3、Index Templatesspa
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html
Index Templates 當你定義了一個template。新的indx建立時候,只有匹配到template的pattern string。該template的settings,mappings,alias定義就會被應用到新建立的index上。(Index Templates allow you to define templates that will automatically be applied when new indices are created.The templates include both settings and mappings and a simple pattern template that controls whether the templates should be applied to the new index.)
Note: Templates are only applied at index creation time.Changing a template will have no impact on existsing indices.
curl -XPUT 'localhost:9200/_template/template_1' -d '{ "template": "te*", ==> pattern "mappings": { "type1": { "_source": { "enabled": false }, "properties": { "host_name": { "type": "string", "index": "not_analyzed" }, "create_at": { "type": "date", "format": "EEE MMM dd HH:mm:ss Z YYYY" } } } } }' ==> Define a template named template_1,with a template pattern of te*.The mappings will be applied to any index name that matches the te* template
Multiple Template Matching:
Multiple index templates can potentially match an index,in this case,both the settting and mappings are merged into the final ocnfiguration of the index.The order of the merging can be controlled useing order parameter,with lower order being applied first, and higher orders overriding them.
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 } } }}'