【发布时间】:2020-03-02 20:10:54
【问题描述】:
我必须按标签对演员的电影进行聚合
例如,我想查看 Robert Deni Jr. 的所有电影标签。 例如:动作(10)大片(4)浪漫(2)
如果我的用户按标签(动作)过滤小罗伯特丹尼电影,则需要更新过滤器。如果我检查浪漫然后:动作(1)大片(2)浪漫(2)
这是我的映射:
"mapping": {
"actor": {
"properties": {
"id": {
"type": "keyword"
},
"name": {
"type": "text"
},
"movies": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"studio": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"label": {
"type": "text"
}
}
},
"tags": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"label": {
"type": "text"
}
}
}
}
}
}
}
}
}
这是我的查询
{
"query": {
"bool": {
"filter": [
{
"match": {
"id": {
"query": 587
}
}
},
{
"bool": {
"must": [
{
"nested": {
"path": "movies",
"query": {
"nested": {
"path": "movies.tags",
"query": {
"term": {
"movies.tags.id": {
"value": 5189,
"boost": 1
}
}
}
}
}
}
}
]
}
}
]
}
},
"aggs": {
"tags": {
"nested": {
"path": "movies.tags"
},
"aggs": {
"tags": {
"terms": {
"field": "movies.tags.id",
"size": 100
}
}
}
}
}
}
我的聚合忽略了给定的标签。我可以按标签过滤,也可以不过滤,聚合结果不会改变。
有什么想法吗?
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation