带字段的算术运算

时间:2014-05-28 10:06:40

标签: elasticsearch

是否可以查询两个字段之间的减法结果?

E.g。有两个字段:" start"," end"。我希望文档包含end - start > 10

这可以直接完成,或者唯一的方法是在加载具有这种差异的文档时创建一个新字段吗?

2 个答案:

答案 0 :(得分:6)

您可以使用script filters中解释的脚本语法来使用scripting documentation

针对您的具体问题,您可能会执行类似

的操作
{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "script": {
          "script": "doc['end'].value - doc['start'].value > 10"
        }
      }
    }
  }
}

您可以在其中用您自己的match_all查询替换。

从上面的代码中可以清楚地看到,您可以使用sintax doc['field']访问文档中的specific fields,并将特定函数应用于其值。在这种情况下,.value(不带括号)返回字段本身的值。

答案 1 :(得分:1)