【发布时间】:2017-10-13 15:17:12
【问题描述】:
我想根据centerId、courseId 和batchId 搜索学生。例如,我有学生数据如下。
{
"s1":{
"name":alex,
"centerId":"N001",
"courseId":"ncjava",
"batchId":"nb1"},
"s2":{
"name":John,
"centerId":"N001",
"courseId":"nc02",
"batchId":"ncb2"},
"s3":{
"name":David,
"centerId":"N001",
"courseId":"ncjava",
}
}
现在我想搜索centerId、courseId 和batchId 匹配的学生,甚至想要匹配centerId 和courseId 但缺少batchId 的学生。我在下面写了查询
{
"query": {
"bool": {"must": [
{
"match": {
"centerId":"N001"
}},
{ "match": {
"courseId": "ncjava"
}}
],
"should":[
{
"match": {
"batchId": "nb1"
}
}
]
}
}
}
此查询返回与centerId 和courseId 匹配的所有学生。但它也会让我返回具有不同“batchId”的学生。当batchId 匹配或不存在时,我只想要学生。
【问题讨论】:
标签: elasticsearch