zoukankan      html  css  js  c++  java
  • 7.1 为什么bulk使用奇特的json格式?

    回顾:
    bulk的语法要求:每个json串都不能换行,不同json串之间,必须换行
     
    为什么不用标准json数组呢?如:
    [
        {
            "create":{...}
        },
        {
            "update":{...}s
        }
    ]
     
    因为,如果使用这种Json数组,ES需要做的是
    1. 把字符串转成 Json数组对象
    2. 按每个Json所指定的index、type、id,路由到对应shard上
    3. 在shard上分别执行对应操作
    可以看到,首先,字符串转Json是个耗时的工作;其次,ES需要在内存中保存一份字符串、一份Json对象,是重复的数据。这样,当bulk内容大的时候,会导致ES占用不必要的内存,而会影响搜索、聚合请求速度,而且大量垃圾数据,会导致jvm的GC更多,占用更多时间
     
    而,如果使用bulk规定的,每个json用一行的方式,
    ES需要做的是:
    1. 切分请求字符串
    2. 取到命令类型(create、update)、index、type
    3. 直接把 每行字符串(或者每两行)发到对应shard上去,就完事了。
    不会有内存浪费,和多余时间开销。
     
    因此,这种语法,主要考虑的是ES的性能问题。值得借鉴
     
  • 相关阅读:
    vi编辑器
    在shell脚本中使用函数
    在shell脚本中进行条件控制以及使用循环
    shell指令expr和test指令
    利用ps指令查看某个程序的进程状态
    shell变量的使用
    创建和运行shell脚本程序
    关于强制类型转换(c语言)
    elastic 常用查询操作
    elastic 集群安装
  • 原文地址:https://www.cnblogs.com/cc299/p/11032813.html
Copyright © 2011-2022 走看看