带字段的算术运算

Dio*_*lor 3 elasticsearch

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

例如,有两个字段:"开始","结束".我想要文件end - start > 10.

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

mic*_*mia 6

您可以使用脚本文档中介绍的脚本语法来使用脚本过滤器.

对于您的具体问题,您可能会做类似的事情

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "script": {
          "script": "doc['end'].value - doc['start'].value > 10"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在哪里可以用match_all自己的查询替换查询.

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