lj Blog

Thinking will not overcome fear but action will.

ElasticSearch mget

ElasticSearch mget 批量查询

mget GET /_mget { "docs":[ { "_index":"test_index", "_type":"text_type", "_id":1 }, { "_index":"test_index2", "_type":"text_type2", "_id":2 } ...

ElasticSearch bulk

ElasticSearch bulk 批量增删改

bulk 注意: bulk api 对 json 有严格的要求,每个json 不能换行,只能放一行,同时,两个json 之间必须有换行 bulk 操作中, 任意一个操作失败是不会影响其他操作的,但是在返回结果中会告诉对应的异常日志 bulk request 会加载到内存里,如果request 太大的话反而会影响性能 POST /my_index/my_type/_bul...

ElasticSearch partial update

ElasticSearch partial update

partial update 正常的 update 需要传入所有的字段,然后执行全量替换,标记 deleted , 重建 document 等 partial update 只需要传入关注的字段即可 原理 实际和 全量更新原理一样,只不过查询全量document 在 es 自动执行中 内部先获取document , 将 字段放入 查询出的 document , 然后执行全量替换...

ElasticSearch 并发冲突问题理解

ElasticSearch 并发冲突问题理解

并发冲突问题 线程1 ,线程2 同时修改一个document (库存-1,原100) ,假设线程1 先修改成功99,线程2 修改为99 就是错误的,es 中应该为 98 悲观锁 1.线程1 读取数据 document, 加锁,返回数据 2.线程2 读取数据 document, 读取不到 3.线程1 减库存,写入数据,线程2 可以读取到最新的 document ...

ElasticSearch 全量替换、强制创建以及lazy delete 机制

ElasticSearch 全量替换、强制创建以及lazy delete 机制

全量替换 全量替换与创建的语法是一样的,如果document _id 不存在,就创建,如果存在就修改 document 是不可变的,要想修改,就是要全量替换,直接对document 重建索引,替换所有内容 es 会将老的document 标记为 deleted,然后给我们一个新的 document , 当创建越来越多document 的时候,es 会在合适的时机删除 delet...

ElasticSearch 元数据

ElasticSearch 元数据

数据结构 { "_index" : "ecommerce", "_type" : "product", "_id" : "1", "_version" : 2, "_seq_no" : 4, "_primary_term" : 1, "found" : true, "_source" : { "name" : "jiaqiangban gaoluji...

ElasticSearch ID 自动生成和手动指定

ElasticSearch ID 自动生成和手动指定

手动指定 从其他系统中导入到es 会采取手动指定的方式,采用系统已有的唯一标示作为es document的 _id PUT /test_index/test_type/2 { "test_content":"this is content" } GET /test_index/test_type/2 { "_index" : "test_index", "_type...

ElasticSearch 分布式架构

ElasticSearch 分布式架构

增加或者删除节点,数据 reblance 保持负载均衡 master 节点 创建和删除索引 创建和删除节点 节点平等的分布式概念 1.节点对等,每个节点都能接受请求 2.自动请求路由 primary shard 和 replica shard 再梳理 一个...

ElasticSearch 聚合函数

ElasticSearch 聚合函数

使用aggs 计算每个tag 下的商品数量 ```java GET /ecommerce/product/_search { “aggs”: { “myname_groupbytags”: { “terms”: { “field”: “tags” } } } } ```js { "error": { "r...

ElasticSearch 简单操作

ElasticSearch 简单操作

CRUD 新增和修改都可以用这个,但是修改如果用这个命令必须带所有field PUT /index/type/id PUT /ecommerce/product/1 { "name":"gaolujie yagao", "desc":"gaoxiao meibai", "price":30, "producer":"gaolujie producer", ...