Elasticsearch api 增删改查,批量获取mget,批量操作bulk,版本控制version,映射mapping

3 篇文章 0 订阅

标题内容有点多,挨个总结一下:
单模式下的api 增伤改查:
批量获取mget
批量操作bulk
如何批量创建,删除,更新文档呢,就要用到bulk,上面介绍了单模式下的操作。bulk是多模式下的批量操作
bulk 就是为了实现多个文档的create,index,update 或者delete
请求体格式:
在这里插入图片描述
json 格式不允许使用格式化后的json,所以后面的\n得注意。ES的设计
bulk 处理文档大小的最佳值
在这里插入图片描述
版本控制
1.为什么要进行版本控制
在这里插入图片描述
如果没有做线程相关的处理。就会出现上述问题。这就是为什么要做版本控制,解决线程不安全的问题,传统的就是通过锁来处理的。如下2种锁
2.悲观锁和乐观锁
悲观锁:假定会发送并发冲突,屏蔽一切可能违反数据完整性的操作
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性(脏读)
ES使用的是乐观锁机制
3.内部版本控制和外部版本控制
通过内部版本控制和外部版本控制 _version版本控制来实现,_version 自增长,修改数据后,_version 会自动加1
什么使用用到外部版本控制?
Elasticsearch 的查询功能非常强大,因此很多系统应用都是查询交给ES,后端主体数据库存储采用关系型数据库等,那么问题来了。oracle 数据库有他们自己的版本控制机制,比如时间戳,数据同步到Elasticsearch后希望elasticsearch也能使用这个时间戳的字段进行版本控制,那怎么办呢。怎么让ES也使用这个版本控制呢。这里就提供了一个方法,就是外部版本控制机制
为了保持_version 与外部版本控制的数值一致,使用version_type=external 检查数据当前的version值是否小于请求中的version 值
内部版本控制要求请求中的version 值必须等于当前的version值
version 值必须是整数,不能是float等的类型

映射mapping
1.什么是映射
创建索引的时候,可以预先定义字段的类型以及相关的属性
这样会让索引建立得更加的细致和完善
分类:静态映射 和动态映射
默认不手动创建的话,ES会智能的识别索引的类型,不设置智能识别。
ES里面可以定义的字段类型
在这里插入图片描述
binary 二进制
根据实际的情况定义自己的类型
2.映射的属性方法
除了定义字段的类型,还可以给字段添加相关的属性
在这里插入图片描述
动态映射:
什么是动态映射:
文档中碰到一个以前没见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射
如何配置动态映射:
通过dynamic属性进行控制
true:默认值,动态添加字段;fasle:忽略新字段;strict:碰到陌生字段,抛出异常
适用范围:适用在根对象上或者object类型的任意字段上
管理映射:
获取某个索引的映射信息:
GET /library/_mapping
获取某个索引下某个type的映射信息:
GET /library/_mapping/books
获取这个集群内所有的映射信息:
GET /_all/_mapping
获取这个集群内某两个或多个type的映射信息
GET /_all/_mapping/books/band_account

mapping 一旦建立,就不能更改现有的字段映射
如果要推倒现有的映射,你得重新建立一个索引,然后重新定义映射
然后把之前索引里的数据导入到新建立的索引里
具体的方法:
1.给现有的索引定义一个别名,并且把现有的索引指向这个别名,运行步骤2
2.运行:PUT /现有索引/_alias/别名A
3.新创建一个索引,定义好最新的映射
4.将别名指向新的索引,并且删除之前索引的执行,运行步骤5
5.运行:

POST  /_aliases
{
	"actions":[
	{"remove":{"index":"现有索引名“,"alias":"别名A"}},
	{"add":{"index":"新建索引名","alias":"别名A" }}
	]
}

通过整几个步骤就实现了索引的平滑过渡,并且是零停机的
删除映射:
DELETE /library/books
DELETE /library/books/_mapping

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值