弹性搜索字段之间的比较

时间:2014-12-30 16:03:47

标签: elasticsearch

假设我有以下字段的文档: {field1, field2, ... fieldn}

我需要运行一些查询,其中某些条件需要在两个或多个字段之间进行比较。比如fieldX = fieldY

在标准SQL中,一个例子可能是:

SELECT * FROM Table1 WHERE farePrice>100 AND originRegion = destinationRegion 

我一直在阅读一些文档,看起来“脚本”可能是实现这一目标的唯一方法吗?或者还有其他选择吗?

1 个答案:

答案 0 :(得分:30)

您可以使用脚本过滤器 -

{
  "filtered": {
    "query": {
      "range": {
        "farePrice": {
          "gt": 100
        }
      }
    },
    "filter": {
      "script": {
        "script": "doc['originRegion'].value ==  doc['destinationRegion'].value"
      }
    }
  }
}

您可以在herehere找到更多信息。