ELK--- Elastic Search快速入门CURD操作

Elastic Search数据格式

  • 传统:应用系统的数据结构都是面向对象的,将数据对象存储到数据库,查询的时候将关联的对象再聚合起来。
  • ES:Elastic Search面向文档,文档中存储和传统数据库一样的对象。

例如学生和班级的关系:

public class Student {
  private String id;
  private String name;
  private String classId;
}
private class Classes {
  private String id;
  private String className;
}

传统的数据库中要设计所谓的一对多,多对一的两张表,添加外键等。查询时需要进行关联,过程繁琐。

ES规避了这种繁琐的设计,直接将学生存储为一个文档:

{
"id":"1",
"first_name": "san", 
"last_name": "zhang", 
"classInfo": {
"id": "1",
"className": "三年二班"
	}
}

Elastic Search的CURD操作

创建索引

语法:PUT /index
在这里插入图片描述

删除索引

语法:DELETE /index
在这里插入图片描述

增加文档

语法:PUT /index/type/id
在这里插入图片描述

查询文档

语法:GET /index/type/id
在这里插入图片描述

修改文档

  • 全文替换
    全文替换是将文档的所有信息进行覆盖,需要填写所有的字段。

语法:PUT /index/type/id
在这里插入图片描述

  • 局部替换
    局部替换只会替换当前需要替换的字段。

语法:POST /index/_update/id
doc中传入想要修改的字段。
在这里插入图片描述

删除文档

语法:DELETE /index/type/id
在这里插入图片描述

自动生成id

在创建的时候,我们可以选择手动创建id,也可以不传入id,这是ES会自动生成id。

ES提供生成20位base64编码的GUID,通过算法使得id不会重复,即使是在分布式的情况下。

语法:POST /index/type/
在这里插入图片描述

自定义返回数据

有些时候数据过于多,但是只需要返回所需的字段,可以自定义获取目标字段。

语法:GET /index/type/id?_source_includes=字段1,字段2……
在这里插入图片描述

强制创建

全局更新可以理解为再次创建了新的文档,因为传入了全部字段。仔细回看全局更新会发现,在更新的时候version字段会进行累加,这是因为更新的时候创建了新的文档,旧文档并没有删除,而是标记为deleted状态,等到合适的时间ES会进行批处理统一删除。

为防止覆盖原有数据,ES提供了强制创建,这样不会覆盖原有文档。

语法:PUT /index/type/id/_create
在这里插入图片描述

脚本更新

ES支持使用内置脚本执行复杂操作。

例如:将id为1的学生age增加为10岁。

POST /stu/class1/1/_update
{
//ctx表示当前内容  当查询的时候数据都是保存在_source中的
   "script" : "ctx._source.age += 10"
}

在这里插入图片描述
在这里插入图片描述
此时的年纪由创建的18岁变为了28岁(一下子变老咯~)。

更多关于脚本的内容可以参考官网:elastic官网脚本文档,这里不做过多的赘述。

_version乐观锁控制

对于ES,文档的增删改都是基于版本号_version
上述的例子已经证明改是版本号增加,对于增和删这里就不做演示了。
为什么会采用这种所谓的延时策略?这是因为对于ES来说,每当有数据需要删除的时候,如果立刻进行删除,所有分片和副本也都需要立刻进行删除,这对于ES集群来说压力太大,因此ES采用这种方法来减缓压力,待到合适时机统一进行删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值