要查找两个整数字段之间的差异并检查它是否属于特定范围,请使用elasticsearch中的脚本



我有两个字段,让我们在我的文档中命名它们为"fieldA"one_answers"fieldB",我需要找到它们之间的差异,并检查该值是否属于特定范围,例如"rangeA"或" rangeB",然后返回符合我的标准的文档。数据的模式如下所示:

{
"fieldA": 45
"fieldB":13
}

我需要找到"fieldA"one_answers"fieldB"之间的差异在30和35之间的所有文档。我怎么能做到这一点使用脚本在elasticsearch?

这也可以使用下面的聚合和脚本来完成:

{
   "aggregations": {
      "age_diff": {
         "range": {
            "script": "doc["fieldA"].value - doc["fieldB"].value",
            "ranges": [
               {
                  "from": 30,
                  "to": 35
               }
            ]
         }
      }
   }
}

这样您就可以检查有多少文档属于指定的范围。但是如果你想在聚合下获取文档,你可以使用"top_hits"聚合。

关于聚合的更详细的讨论可以在这里找到,更多关于"top_hits"的详细信息可以在这里找到

{
  "query": {
    "filtered": {
      "filter": {
        "script": {
          "script": "difference=doc['fieldA'].value-doc['fieldB'].value;return (difference>param1 && difference<param2);",
          "params": {
            "param1":30,
            "param2":35
          }
        }
      }
    }
  }
}

最新更新