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

有人可以给我指路吗?
提前发送

最佳答案

您可以将bool查询与must和must not一起使用。
Documentation on the bool query

您可以将对DATASET1的查询放在must中,将对DATASET2的查询放在must_not中:

{
"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类型的文档。

关于elasticsearch - 如何在Elasticsearch中执行MINUS操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38221457/

10-12 19:38