如何将2个匹配查询加入到elasticsearch的查询中?

时间:2012-11-13 15:36:34

标签: elasticsearch

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

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

但是我对弹性搜索进行查询并不容易。

首先,我查询了user_id

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

结果是我的预期。

然后,我查询了name

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

它也运作良好。

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

1 个答案:

答案 0 :(得分:11)

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

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

{
    "bool" : {
        "must" : [{
            "match" : {
                "user_id" : "1"
            },
            "match" : {
                "name" : "John"
            }
        }]
    }
}