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

ElasticSearch 8.6:数组字段转布尔字段的查询实现

Elasticsearch 8.6 两种数组场景的布尔字段生成方案

1. 普通数组字段场景

需求:为每条数据新增布尔字段fieldArrayA_as_boolean,当fieldArrayA长度大于0且包含val1时返回true,否则返回false。

对应的查询语句:

GET /your-index/_search
{
  "script_fields": {
    "fieldArrayA_as_boolean": {
      "script": {
        "source": "doc['fieldArrayA'].size() > 0 && doc['fieldArrayA'].contains('val1')"
      }
    }
  },
  "_source": true // 保留原始字段,若不需要可设为false
}

说明:通过script_fields动态计算目标字段,脚本中利用doc对象直接获取数组的长度与包含关系,返回布尔结果。

2. 嵌套数组字段场景

需求:为每条数据新增布尔字段fieldArrayB_as_boolean,当fieldArrayB长度大于0且存在fieldB1值为val1的元素时返回true,否则返回false。

对应的查询语句:

GET /tly-idx_test1/_search
{
  "script_fields": {
    "fieldArrayB_as_boolean": {
      "script": {
        "source": "doc['fieldArrayB.fieldB1'].size() > 0 && doc['fieldArrayB.fieldB1'].contains('val1')"
      }
    }
  },
  "_source": true
}

说明:嵌套类型数组的子字段可通过doc['嵌套字段.子字段']的方式获取所有值的集合,判断逻辑与普通数组一致;该方式基于索引字段查询,性能优于遍历原始_source数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:30:06