想象一下,我有一个电影文档,其评级被建模为嵌套字段:
"mappings": {
"movie": {
"properties": {
"name": {"type": "text"}
"ratings": {
"type": "nested"
"properties": {
"userId": {"type": "keyword"},
"rating": {"type": "integer"}
}
}
}
}
}
我想要做的是:对于给定的电影名称和用户列表' IDS。我想在这些用户中找到电影和最低评级。我设法构建一个查询来完成这项工作
{
"query": {
"bool": {
"must": [{
"match": {
"name": "fake movie name"
}
}],
"filter": {
"nested": {
"path": "ratings",
"query": {
"bool": {
"must": {
"match": {
"ratings.userId": ["user1", "user2"]
}
}
}
}
}
}
},
"aggs": {
"userIdFilter": {
"filter": {
"terms": {
"ratings.userId": ["user1", "user2"]
}
},
"aggs": {
"lowestRating": {
"min": {
"field": "ratings.rating"
}
}
}
}
}
}
}
是否可以在最低评级上添加过滤器,只返回文件的最低评级是否低于某个值?
我希望有一种方法可以在不使用脚本的情况下解决这个问题,我尝试bucket-selector-aggregation,但无法获得正常工作的版本。有任何想法吗?
谢谢