Merge branch 'master' of github.com:heibaiying/Full-Stack-Notes

This commit is contained in:
heibaiying 2019-07-15 15:09:22 +08:00
commit 70c2827ddd

View File

@ -314,14 +314,14 @@ POST _bulk
上面是一个批量更新的示例,其简化后抽象语法格式如下,需要注意的是这里语法是非常严格的:一个更新操作必须由两行 Json 组成,第一行 Json 用于说明操作、标识文档位置和其他可选配置,第二行 Json 用于存放数据或者指明更新方式:
```json
```txt
POST _bulk
{"操作",{“文档位置”,"可选操作"}}
{数据}
{"操作",{“文档位置”,"可选操作"}}
{数据}
{"操作",{“文档位置”,"可选操作"}}
{数据}
{"操作" : {"文档位置","可选操作"}}
{"数据"}
{"操作" : {"文档位置","可选操作"}}
{"数据"}
{"操作" : {"文档位置","可选操作"}}
{"数据"}
....
```
@ -339,4 +339,4 @@ POST _bulk
}
```
之所以这样设计是因为如果允许多行模式,则其解析会比较麻烦且耗费性能,假设我们一次性批量执行上万个更新,则用于描述其操作的 Json 文件就会非常大,此时程序需要将其拷贝到内存中先进行解析,这个操作既浪费了内存又浪费了计算资源。而采用单行模式就能避免这个问题,程序只需要逐行读取记录,每读取两行则必然就是一个完整的操作,此时只需要将其发送到对应分片节点上执行即可。
之所以这样设计是因为如果允许多行模式,则其解析会比较麻烦且耗费性能,假设我们一次性批量执行上万个更新,则用于描述其操作的 Json 文件就会非常大,此时程序需要将其拷贝到内存中先进行解析,这个操作既浪费了内存又浪费了计算资源。而采用单行模式就能避免这个问题,程序只需要逐行读取记录,每读取两行则必然就是一个完整的操作,此时只需要将其发送到对应分片节点上执行即可。