我开始使用ES而且我很难接受嵌套查询的概念。 我想根据以下条件过滤我博客帖子的嵌套评论
目标是在没有未经验证的评论的情况下返回所有帖子。
我的映射
GET _mapping
{
"post":{
"mappings":{
"post":{
"properties":{
"id":{
"type":"integer"
},
"comments":{
"type":"nested",
"include_in_parent":true,
"properties":{
"content":{
"type":"text"
},
"is_valid":{
"type":"integer",
}
}
}
}
}
}
}
}
当前文件
GET _search
{
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_type": "post",
"_id": "1",
"_score": 1,
"_routing": "1",
"_source": {
"id": "1",
"comments": [
{
"id": "1",
"content": "Lorem ipsum dolor sit amet.",
"is_valid" : 1
},
{
"id": "2",
"content": "Lorem ipsum dolor sit amet.",
"is_valid" : 0
},
]
},
{
"id": "2",
"comments": [
{
"id": "3",
"content": "Lorem ipsum dolor sit amet.",
"is_valid" : 0
}
]
},
{
"id": "3",
},
}
]
}
}
当前查询
GET _search
{
"query": {
"bool": {
"should": [
{
"nested": {
"path": "comments",
"query": {
"match" : { "comments.is_valid" : 1 }
},
"inner_hits": {}
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "comments"
}
}
}
}
]
}
}
}
因此,通过此查询,我可以在 inner_hits 字段中检索发布#1 而没有无效评论,发布#3 因为他没有评价。
但我不知道如何获得帖子#2 ,他只有一个无效评论且此查询不匹配。
你会如何解决这个问题?
谢谢:)