ES6.3.1常用api

一、文档类

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

猜你喜欢

转载自www.cnblogs.com/wangzhuxing/p/9427550.html
今日推荐