我的数据格式如下
{
"mappings": {
"blog": {
"properties": {
"comments": {
"type": "nested",
"properties": {
"subComments": {
"type": "nested"
}
}
}
}
}
}
}
我有多个文档,其中包含
等数据{
"blog_post_id": "blog1",
"comments": [
{
"id": "c1",
"user_id": "u1",
"timestamp": 1487781975676,
"value": "CVLA1",
"subComments": [
{
"value": "sub comment 1"
},
{
"value": "sub comment 2"
}
]
},
{
"id": "c2",
"user_id": "u1",
"timestamp": 1487781975686,
"value": "CVLA2",
"subComments": [
{
"value": "sub comment 3"
},
{
"value": "sub comment 4"
}
]
}
]
}
我想匹配具有评论值CVLA1的博客文档和具有值“子评论2”的成功评论。
我写了一个像
这样的查询{
"query": {
"nested": {
"path": "comments",
"query": {
"bool": {
"must": [
{
"match": {
"comments.value": "CVLA1"
}
},
{
"nested": {
"path": "comments.subComments",
"query": {
"match": {
"commnets.subComments.value": "sub comment 2"
}
}
}
}
]
}
}
}
}
}
但是这个没有按预期工作。任何帮助如何在多级嵌套文档的不同级别进行查询。
答案 0 :(得分:3)
您的查询周围有commnets.subComments.value
的拼写错误。它应该是comments.subComments.value
。所以整个查询看起来像这样:
{
"query": {
"nested": {
"path": "comments",
"query": {
"bool": {
"must": [
{
"match": {
"comments.value": "CVLA1"
}
},
{
"nested": {
"path": "comments.subComments",
"query": {
"match": {
"comments.subComments.value": "sub comment 2"
}
}
}
}
]
}
}
}
}
}
我仔细检查过 - 它适用于我。