6

我想查询user_idis'1'nameis的数据'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"
    }
  }
}

它也运作良好。

但我无法使用 and 操作查询加入 2 个条件。如何将这两个匹配查询合并为一个使用和操作?

4

1 回答 1

11

您需要的是一个bool 查询,您可以在其中放置所有单个查询:

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

{
    "bool" : {
        "must" : [{
            "match" : {
                "user_id" : "1"
            },
            "match" : {
                "name" : "John"
            }
        }]
    }
}
于 2012-11-13T15:42:20.293 回答