如何在ElasticSearch中使用ABS函数?

时间:2017-05-11 08:05:47

标签: c# elasticsearch

我正在使用ElasticSearch版本5.1。

我正在尝试检索所有文件,其中减去两个字段< | X |

这是我运行的查询:

post /my_idx/_search
{
  "query": {
    "bool": {
      "must": {
        "script": {
          "script": {
            "inline": "doc[\"f1\"].value - doc[\"f2\"].value < 9 && doc[\"f1\"].value - doc[\"f2\"].value > -9",
            "lang": "painless"
           }
         }
       }
     }
   }
}

我尝试使用常用的数学函数'abs'但没有成功。

如何在查询中使用此功能?

谢谢

2 个答案:

答案 0 :(得分:7)

您只需在Math.abs(...)脚本中使用painless方法。

答案 1 :(得分:2)

您可以尝试使用具有groovy功能的abs lang编写脚本。

 {
 "query": {
 "bool": {
  "must": {
    "script": {
      "script": {
        "inline": "doc['f1'].value - doc['f2'].value  < Math.abs(9)",
        "lang": "groovy"
         }
        }
      }
     }
   }
 }