You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch中获取数组字段的最后一个元素并返回计算字段

Elasticsearch 新增计算字段查询方案

你可以使用 Elasticsearch 内置的 script_fields 特性实现需求,查询时既保留原始文档数据,同时返回payments数组最后一项的计算字段,完整查询语句如下:

GET customers-v1/customer/123
{
  "_source": true,
  "script_fields": {
    "last_payment": {
      "script": {
        "lang": "painless",
        "source": "if(params._source.payments != null && params._source.payments.size() > 0) { return params._source.payments.get(params._source.payments.size()-1); } return null;"
      }
    }
  }
}

参数说明:

  • _source: true 配置用来保留返回原始的文档所有字段,不会因为添加了脚本字段就默认屏蔽原始数据
  • 脚本采用ES默认的painless语法,先做了非空和长度判断,避免数组为空时抛出异常,再通过size()-1取数组最后一个元素
  • 新增的计算字段名为last_payment,你可以根据业务需求自行修改字段名

查询返回结果会在原有结构基础上新增fields字段,里面就包含你需要的payments数组最后一项的取值。

内容的提问来源于stack exchange,提问作者adrian oviedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:57:05