前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >es的crud

es的crud

作者头像
爱撒谎的男孩
发布2019-12-31 15:38:10
5170
发布2019-12-31 15:38:10
举报
文章被收录于专栏:码猿技术专栏

文章目录

  1. 1. ElasticSearch的简单的CRUD
  2. 2. 添加索引
  3. 3. 检索文档
  4. 4. 删除文档
  5. 5. 修改文档
    1. 5.1. 直接覆盖全部
    2. 5.2. 部分更新
  6. 6. 参考文档

ElasticSearch的简单的CRUD

1、ElasticSearch使用的是RestFul风格的API

2、http://39.105.123.197:5601/

添加索引

1、需要指定索引,文档的类型,文档的Id

2、使用PUT风格的提交方式,如下:

代码语言:javascript
复制
1、`group`:索引名称

2、`employee`:文档的名字

3、`1`:对应的id
代码语言:javascript
复制
PUT /group/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}


PUT /group/employee/2
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}

PUT /group/employee/3
{
    "first_name" :  "Douglas",
    "last_name" :   "Fir",
    "age" :         35,
    "about":        "I like to build cabinets",
    "interests":  [ "forestry" ]
}

检索文档

1、使用GET风格的方式检索,GET/index/document/id如下:

代码语言:javascript
复制
GET /group/employee/1
GET /group/employee/2

删除文档

1、使用DELETE风格的方式删除,DELETE /index/document/id,如下:

代码语言:javascript
复制
DELETE /megacorp/employee/2

修改文档

直接覆盖全部

1、使用PUT覆盖当前的文档,使用这种方式会更新整个文档。

2、这种方式和部分更新的最大区别就是增大了网络的开销

代码语言:javascript
复制
PUT /group/employee/3
{
    "first_name" :  "TOM",
    "last_name" :   "TOM",
    "age" :         60,
    "about":        "I like to build cabinets",
    "interests":  [ "forestry" ]
}

部分更新

0、https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/partial-updates.html

1、文档是不可变的,因此部分的更新也是在内部重复着检索-修改-重建索引 的处理过程 。但是我们对于直接覆盖的方式,可以减少网络传输的时间

2、对指定的文档增加字段,使用doc,如下

代码语言:javascript
复制
POST /megacorp/employee/2/_update
{
   "doc" : {
      "tags" : [ "testing" ],
      "views": 0
   }
}

3、修改已存在的变量的值,使用ctx._source指定文档中的变量,这里的是将views加1

代码语言:javascript
复制
POST /megacorp/employee/2/_update
{
   "script" : "ctx._source.views+=1"
}

4、更新可能不存在的值,如果这个值不存在,那么就添加进去,这个很像MongoDB中的检索,使用upsert完成,如下:

代码语言:javascript
复制
POST /megacorp/employee/2/_update
{
   "script" : "ctx._source.views+=1",
   "upsert": {
       "views": 1
   }
}

5、更新和冲突

1、ElasticSearch在文档更新的时候,每个进程会自动保存版本号_version的值,更改成功之后,如果版本号改变了,那么表示这个文档已经被人更新过了,此时就会更新请求失败。但是我们可以使用指定的参数指定在更新失败之前尝试的更新的次数,retry_on_conflict,如下:

代码语言:javascript
复制
POST /megacorp/employee/2/_update?retry_on_conflict=5 
{
   "script" : "ctx._source.views+=1",
   "upsert": {
       "views": 0
   }
}

参考文档

1、https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ElasticSearch的简单的CRUD
  • 添加索引
  • 检索文档
  • 删除文档
  • 修改文档
    • 直接覆盖全部
      • 部分更新
      • 参考文档
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档