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

phi*_*kim 6 elasticsearch

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

select * from t where user_id = '1' and name = 'John';
Run Code Online (Sandbox Code Playgroud)

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

首先,我查询了user_id:

{
  "query" : {
    "match" : {
      "user_id" : "1"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

结果是我的预期.

然后,我查询name:

{
  "query" : {
    "match" : {
      "name" : "John"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它运作良好.

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

Tho*_*ten 11

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

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

{
    "bool" : {
        "must" : [{
            "match" : {
                "user_id" : "1"
            },
            "match" : {
                "name" : "John"
            }
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)