一、文档类
1.Index API: 创建并建立索引
PUT twitter/tweet/1 { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }
官方文档参考:Index API。
2.Get API: 获取文档
curl -XGET 'http://localhost:9200/twitter/tweet/1'
官方文档参考:Get API。
3.DELETE API: 删除文档
$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1'
官方文档参考:Delete API。
4.UPDATE API: 更新文档
PUT test/type1/1{ "counter" : 1, "tags" : ["red"]}
官方文档参考:Update API。
5.Multi Get API: 一次批量获取文档
PUT 'localhost:9200/_mget { "docs" :
[ {"_index" : "test", "_type" : "type", "_id" : "1" }, { "_index" : "test", "_type" : "type", "_id" : "2" } ] }
官方文档参考:Multi Get API。
6.Bulk API: 批量操作,增删改查
1.本地文件批量操作
e$ curl -s -XPOST localhost:9200/blog/user/_bulk --data-binary @requests requests文件内容如下 {"index":{"_id":"25"}} {"name":"黎明","id":25} {"index":{"_id":"26"}} {"name":"小明","id":26} {"index":{"_id":"26"}} {"name":"雄安","id":27} {"index":{"_id":"28"}} {"name":"笑话","id":28}
2.resp 方法
curl -H "Content-Type: application/json" -XPOST 'http://47.52.199.51:9200/book/english/_bulk' -d' {"index":{"_id":"17"}} {"name":"cddd","id":17} {"index":{"_id":"18"}} {"name":"cddd","id":18} {"index":{"_id":"19"}} {"name":"cddd","id":19} {"index":{"_id":"20"}} {"name":"cddd","id":20} '
官方文档参考:Bulk API。
7.DELETE By Query API: 查询删除
POST /book/_delete_by_query { "query":{ "match":{ "name": "yangxioa" } } }
7.1.删除所有
POST /book/_delete_by_query { "query":{ "match_all":{} } }
7.2.支持路由查询(routing=XXX,匹配分片数)
POST twitter/_delete_by_query?routing=1 { "query": { "range" : { "age" : { "gte" : 10 } } } }
{ "took" : 147, // 整个操作从开始到结束的毫秒数 "timed_out": false, // true如果在通过查询执行删除期间执行的任何请求超时 ,则将此标志设置为。 "total": 119, // 已成功处理的文档数。 "deleted": 119, // 已成功删除的文档数。 "batches": 1, // 通过查询删除拉回的滚动响应数。 "version_conflicts": 0, // 按查询删除的版本冲突数。 "noops": 0, // 对于按查询删除,此字段始终等于零。它只存在,以便通过查询删除,按查询更新和reindex API返回具有相同结构的响应。 "retries": { // 通过查询删除尝试的重试次数。bulk是重试的批量操作search的数量,是重试的搜索操作的数量。 "bulk": 0, "search": 0 }, "throttled_millis": 0, // 请求睡眠符合的毫秒数requests_per_second。 "requests_per_second": -1.0, // 在通过查询删除期间有效执行的每秒请求数。 "throttled_until_millis": 0, //在按查询响应删除时,此字段应始终等于零。它只在使用Task API时有意义,它指示下一次(自纪元以来的毫秒数),为了符合,将再次执行受限制的请求 "failures" : [ ] //如果在此过程中存在任何不可恢复的错误,则会出现故障数组。如果这是非空的,那么请求因为那些失败而中止。逐个查询是使用批处理实现的, 任何故障都会导致整个进程中止,但当前批处理中的所有故障都会被收集到数组中。您可以使用该conflicts选项来防止reindex在版本冲突中中止。 }
官方文档参考:Delete By Query API。
8.update更新api
8.1.脚本更新
POST test/_doc/1/_update { "script" : { "source": "ctx._source.counter += params.count", "lang": "painless",// ES语言类型 "params" : { "count" : 4 } } }
8.2.新增字段
POST test/_doc/1/_update { "script" : "ctx._source.new_field = 'value_of_new_field'" }
8.3.删除字段
POST test/_doc/1/_update { "script" : "ctx._source.remove('new_field')" }
8.4.存在就更新
POST test/_doc/1/_update { "script" : { "source": "if (ctx._source.tags.contains(params.tag)) { ctx.op = 'delete' } else { ctx.op = 'none' }", "lang": "painless", "params" : { "tag" : "green" } } }
8.5.更新部分字段
POST test/_doc/1/_update { "doc" : { "name" : "new_name" } }
8.6.upsert:存在就更新,不存在插入
POST test/_doc/1/_update { "script" : { "source": "ctx._source.counter += params.count", "lang": "painless", "params" : { "count" : 4 } }, "upsert" : { "counter" : 1 } }
官方文档参考:Update By Query API