Elasticsearch 中支持的 ECMAScript 2020(ES11)功能

阅读时长 5 分钟读完

在 Elasticsearch 中使用 ECMAScript(也称为 JavaScript)非常常见,它可以用于编写查询、聚合、脚本和管道等。在 Elasticsearch 7.11 版本中,支持 ECMAScript 2020(ES11)的大部分新功能,这篇文章将会介绍主要的功能和应用场景以及示例代码。

可选链操作符(Optional Chaining)

可选链操作符是一个新的 ECMAScript 中的特性,用于简化在对象链中读取值的判断和处理。在 Elasticsearch 中,当需要访问一个深层嵌套的属性,使用可选链操作符可以让代码更加简洁和高效。

-- -------------------- ---- -------
-- ------ ----- -- --------
-
  --------- -
    --------- ------------------ -- ---------------------- -- ---
    --------- -
      ----------- -
        -------- ---
      -
    -
  -
-

上面的示例在更新文档的价格时,使用了可选链操作符来访问 params.discount.value 属性的值。如果 params.discountnullundefined,则直接返回 1

空值合并操作符(nullish coalescing)

空值合并操作符是另一个新的 ECMAScript 中的特性,用于判断一个值是否为 nullundefined。在 Elasticsearch 中,它可以用于设置默认值或者保证代码的稳定性。

-- -------------------- ---- -------
-- ------ --
-
  -------- -
    -------- -
      ------------ -
        -- -- ----- - ---- -- --------- ----------- --
        ------ ----------------------- -- --
      -
    -
  --
  --------- -
    -------- -
      ------------ --
    -
  -
-

上面的示例使用了空值合并操作符来设置一个默认值为 10,当 statsnull 或者 pageviews 属性不存在时,则返回默认值。

for-in 循环关键字

for-in 循环关键字可以遍历数组或对象的属性和值。在 Elasticsearch 中,它可以用于聚合操作和管道操作的处理。

-- -------------------- ---- -------
-
  ------- -
    -------- -
      -------- -
        -------- --------
      --
      ------- -
        --------------- -
          ----------- -
            -- -----------
            ------- --
            ------- -
              --------------- -
                -------- ------
              -
            -
          --
          -- -- ------ -------------
          ------------------ -
            -------------- ------------ - ----
            ------------- ---- ----- -- --------------- -------------------------
            ----------------- ------- -------------
            ---------------- ------- ------------------------- -- ---------------------------------
          -
        -
      -
    -
  -
-

上面的示例使用了 for-in 循环关键字来遍历每一本书的属性,将所有属性添加到 state 中。最后返回一个不重复的属性数组。

globalThis 全局对象

globalThis 是一个新的全局对象,代表当前的全局作用域。在 Elasticsearch 中,它可以用于获取全局变量和函数。

上面的示例使用了 globalThis 全局对象来获取节点的 hostname 和公共 IP,使用 nodeInfo.nodeNamenodeInfo.network.publishAddress 属性可以方便地获取节点信息。

总结

这篇文章介绍了 Elasticsearch 中支持的 ECMAScript 2020(ES11)的主要功能,包括可选链操作符、空值合并操作符、for-in 关键字和 globalThis 全局对象。这些功能可以让代码更加简洁、高效和稳定。希望这篇文章对你学习和应用 ECMAScript 2020 有帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645743a3968c7c53b0a0a355

纠错
反馈