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

Elasticsearch查询:筛选availableQuantity大于quantityPerUnitOfMeasure的文档

Elasticsearch 查询:筛选availableQuantity大于自身quantityPerUnitOfMeasure的文档

我需要编写Elasticsearch查询,仅返回availableQuantity字段值大于同文档中quantityPerUnitOfMeasure字段值的文档。

文档结构示例:

{
  "id": "1",
  "quantityPerUnitOfMeasure": 16,
  "availableQuantity": 12
}

测试数据集:

[
  {
    "id": "1",
    "quantityPerUnitOfMeasure": 16,
    "availableQuantity": 12
  },
  {
    "id": "2",
    "quantityPerUnitOfMeasure": 4,
    "availableQuantity": 20
  },
  {
    "id": "3",
    "quantityPerUnitOfMeasure": 40,
    "availableQuantity": 50
  }
]

预期结果:返回id为"2"和"3"的文档,排除id为"1"的文档。


解决方案:使用脚本查询实现字段间比较

可以通过Painless脚本查询直接在文档内部比较两个数值字段,具体语句如下:

{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source": "doc['availableQuantity'].value > doc['quantityPerUnitOfMeasure'].value",
            "lang": "painless"
          }
        }
      }
    }
  }
}

说明:

  • 用bool.filter包裹脚本查询,仅做过滤操作不影响文档评分
  • 通过doc[字段名].value获取字段的数值类型值,直接进行大于比较
  • 需确保availableQuantity和quantityPerUnitOfMeasure均为数值类型(如integer、long),否则脚本会执行失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:42:34