如何在elasticsearch中执行MINUS操作

时间:2016-07-06 10:11:18

标签: elasticsearch querydsl

我正在尝试使用queryDSL在elasticsearch中创建一个像Mysql(DATASET1-DATASET2)这样的MINUS查询,但找不到办法。

有人能指路吗? Tx提前

1 个答案:

答案 0 :(得分:1)

您可以使用必须的bool查询,但不能 Documentation on the bool query

您可以将DATASET1的查询放在must和no中的DATASET2查询中:

{
"bool" : {
    "must" : {
        DATASET1
    }
    "must_not" : {
        DATASET2
    }
}

}

例如:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": {
            "range": {
              "@timestamp": {
                "lte": 1467811620000,
                "gte": 1467811520000
              }
            }
          },
          "must_not": {
            "term": {
              "_type": "bus-api"
            }
          }
        }
      }
    }
  }
}

这将返回这两次之间的所有文档,不包括bus-api类型的文档。