【发布时间】:2021-03-01 02:40:18
【问题描述】:
尝试为以下文档构建查询:
{
"name" : "Bob",
"grades" : [
{
"year" : 2010,
"grade": 8,
},
{
"year" : 2018,
"grade": 7,
},
{
"year" : 2019,
"grade": 4,
}
]
},
{
"name" : "Alice",
"grades" : [
{
"year" : 2005,
"grade": 3,
},
{
"year" : 2016,
"grade": 8,
},
{
"year" : 2018,
"grade": 7,
},
{
"year" : 2019,
"grade": 6,
}
]
}
我有一系列年份,例如从 2010 年到 2020 年。如果在(从 2010 年到 2020 年)范围内的所有可用年份(在文档中),等级 > 5,则查询应该返回一个文档。如果在感兴趣的年份范围之外有等级
{
"query": {
"bool": {
"must": [
{
"nested": {
"query": {
"bool": {
"must": [
{
"term": {
"grades.year": {"value": 2010}
}
},
{
"range": {
"grades.grade": {"from": 5}
}
}
]
}
},
"path": "grades"
}
},
{
"nested": {
"query": {
"bool": {
"must": [
{
"term": {
"grades.year": {"value": 2011}
}
},
{
"range": {
"grades.grade": {"from": 5}
}
}
]
}
},
"path": "grades"
}
},
....
]
}
}
}
可能我肯定错过了什么。有可能吗?
更新
我在 Alice 的成绩中添加了 2005 年的 3 年级。所以现在 Alice 仍然应该匹配,因为 2005 年超出了感兴趣的范围。
谢谢!
【问题讨论】:
标签: elasticsearch elasticsearch-5 elasticsearch-dsl