一尘不染

如何将2个匹配查询加入对Elasticsearch的查询中?

elasticsearch

我想查询的数据user_id'1'name'John'。编写常用的SQL很容易:

select * from t where user_id = '1' and name = 'John';

但是,对Elasticsearch进行查询对我来说并不容易。

首先,我查询了user_id

{
  "query" : {
    "match" : {
      "user_id" : "1"
    }
  }
}

结果是我所期望的。

然后,我查询了name

{
  "query" : {
    "match" : {
      "name" : "John"
    }
  }
}

它也运作良好。

但是我无法使用和操作将2个条件连接在一起的查询。如何将这两个匹配查询合并为一个使用和操作?


阅读 206

收藏
2020-06-22

共1个答案

一尘不染

您需要的是布尔查询,您可以在其中输入所有单个查询:

(我无法测试查询,这可能是错误的,但是bool-query是您问题的答案)

{
    "bool" : {
        "must" : [{
            "match" : {
                "user_id" : "1"
            },
            "match" : {
                "name" : "John"
            }
        }]
    }
}
2020-06-22