1.索引API
下面的请求把JSON对象添加到school索引,_doc映射下。
关于POST请求,如果存在索引,则更新;如果不存在,则添加。
1 POST school/_doc/1 2 { 3 "name":"tom1", 4 "sex":"M" 5 } 6 GET school/_doc/1
效果:
1 { 2 "_index" : "school", 3 "_type" : "_doc", 4 "_id" : "1", 5 "_version" : 1, 6 "_seq_no" : 0, 7 "_primary_term" : 1, 8 "found" : true, 9 "_source" : { 10 "name" : "tom1", 11 "sex" : "M" 12 } 13 }
2.自动创建索引
Automatic index creation is controlled by the action.auto_create_index
setting. This setting defaults to true
, meaning that indices are always automatically created. Automatic index creation can be permitted only for indices matching certain patterns by changing the value of this setting to a comma-separated list of these patterns. It can also be explicitly permitted and forbidden by prefixing patterns in the list with a +
or -
. Finally it can be completely disabled by changing this setting to false
.
意思是:
默认是true,会自动创建索引。
可以配合通配符,决定哪些配置可以被创建,哪些配置不允许被创建
可以设置false,完全禁止设置
测试:
1 PUT _cluster/settings 2 { 3 "persistent": { 4 "action.auto_create_index": "twitter,index10,-index1*,+ind*" 5 } 6 } 7 8 POST ind1/dov/1 9 { 10 "score":"10" 11 }
说明:
Permit only the auto-creation of indices called twitter
, index10
, no other index matching index1*
, and any other index matching ind*
. The patterns are matched in the order in which they are given.
效果:
1 #! Deprecation: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}). 2 { 3 "_index" : "ind1", 4 "_type" : "dov", 5 "_id" : "1", 6 "_version" : 1, 7 "result" : "created", 8 "_shards" : { 9 "total" : 2, 10 "successful" : 1, 11 "failed" : 0 12 }, 13 "_seq_no" : 0, 14 "_primary_term" : 1 15 }
再执行:
1 POST /index11/doc/1 2 { 3 "score":"10" 4 }
效果:
#! Deprecation: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}).
{
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index [index11] and [action.auto_create_index] contains [-index1*] which forbids automatic creation of the index",
"index_uuid" : "_na_",
"index" : "index11"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index [index11] and [action.auto_create_index] contains [-index1*] which forbids automatic creation of the index",
"index_uuid" : "_na_",
"index" : "index11"
},
"status" : 404
}
再次恢复默认:
1 PUT _cluster/settings 2 { 3 "persistent": { 4 "action.auto_create_index": "true" 5 } 6 }
返回:
1 { 2 "acknowledged" : true, 3 "persistent" : { 4 "action" : { 5 "auto_create_index" : "true" 6 } 7 }, 8 "transient" : { } 9 }
3.版本控制
ES提供了版本控制,可以通过使用版本查询参数来指定文档的特定版本。
内部的版本控制是默认版本,从1开始,每次更新递增,包括删除。版本号可以在外部设置,不过要启用此功能,需要将version_type设置为外部。
版本控制是一个实时的过程,不受实时搜索操作的影响。
修改过下面的信息:
1 PUT index1/_doc/1 2 { 3 "name":"tom1", 4 "sex":"M" 5 }
查看:
1 GET index1/_doc/1
返回:
1 { 2 "_index" : "index1", 3 "_type" : "_doc", 4 "_id" : "1", 5 "_version" : 2, 6 "_seq_no" : 1, 7 "_primary_term" : 3, 8 "found" : true, 9 "_source" : { 10 "name" : "tom1", 11 "sex" : "M" 12 } 13 }
发现上面是version为2,所以,可以使用version进行过滤:
1 GET index1/_doc/1?version=2
效果与上面的执行结果相同。
关于版本version_type的功能,后续明白了再补充。
4.自动生成ID
5.操作类型