ES方案我们为学生文档建模,其中包含多个嵌套课程文档。我想搜索有X和Y课程的学生。
映射:
{
"index_classroom": {
"mappings": {
"content": {
"dynamic": "false",
"properties": {
"courses": {
"type": "nested",
"properties": {
"grade": {
"type": "integer"
},
"name": {
"type": "string",
"analyzer": "analyzer_keyword"
}
}
}
}
}
}
}
}
示例文档:
{
"_index": "index_classroom",
"_type": "content",
"_id": "6170_130",
"_score": 0.72833073,
"_source": {
"courses": [
{
"name": "maths",
"grade": "A"
},
{
"name": "economics",
"grade": "A+"
}
]
}
}
我想查询所有学过数学和经济学的学生(进一步补充的是“而不是生物学”。)
谢谢!
答案 0 :(得分:2)
这是您的查询:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "courses",
"query": {
"match": {
"courses.name": "economics"
}
}
}
},
{
"nested": {
"path": "courses",
"query": {
"match": {
"courses.name": "maths"
}
}
}
}
],
"must_not": [
{
"nested": {
"path": "courses",
"query": {
"match": {
"courses.name": "Biology"
}
}
}
}
]
}
}
}