elasticsearch-[输入输出,并发处理,快速批量插入优化]

本章介绍:输入,输出,文档元数据定义,以及 并发请求时elastic处理的方案,批量索引文档时如何快速索引的原理

  • 输入:增删改
  • 输出:查询
  • 文档的元数据:
_index

文档在哪存放

_type

文档表示的对象类别

_id

文档唯一标识
  • 并发冲突:
   通常,我们的网站尤其在库存方面,经常出现并发的请求导致 库存出现负数:一个商品规格数量只有一件,这时候有两个人同时下单,导致 1-2=-1, 储存出现负数,那么elasticsearch是怎么处理呢?

一般数据库的处理方式:悲观并发控制,当读取一行数据时候,给它锁住,直到这行数据修改完毕才释放锁

elasticsearch的梳理方式:乐观并发控制,利用版本号进行控制, 当我们调用接口 进行修改数据时候,这时候elasticsearch的_version属性 会递增,当出现两个重复去修改数据的时候,指定的版本号 跟文档的版本号不一致时候,就会返回错误信息.

 悲观并发控制:假设肯定会出现并发状态

乐观并发控制:假设不会出现并发状况
  • 批量索引文档(插入数据):
看到一个有趣的大文件处理json的数据格式, good.json内容如下

{"index":{"_id":"1"}}
{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
 elasticsearch是这样思考的,由于不同的文档(数据)会根据一个hash(id)%主分片数量 来决定这个 文档 (索引)存放到哪个主分片上。

因此 不同的文档 可能存在不同的分片上。

假如:每次读取一个json文件,需要读取完整个文件的内容,并且解析json数据时候,如果这个文件太大,内存受不了,而且垃圾回收代价太大了,而且也不利于把这些数据索引到不同的主分片上。

elasticsearch解析原理:根据\n 换行符,当读取每小段时候,就解析json数据,并且索引到不同分片上,并且释放内存。这时候既能快速的插入数据,也能减少服务器的压力,减少延时.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值