我想查询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个条件。如何将这两个匹配查询合并为一个使用和操作?
答案 0 :(得分:11)
您需要的是bool query,您可以在其中放置所有单个查询:
(我无法测试查询,可能是错误的,但是bool查询是您问题的答案)
{
"bool" : {
"must" : [{
"match" : {
"user_id" : "1"
},
"match" : {
"name" : "John"
}
}]
}
}