我有以下类型的映射:
{
"mapping": {
"properties": {
"id": {
"type": "String",
"index": "not_analyzed"
},
"tags": {
"type": "nested",
"properties": {
"id": {
"type": "String",
"index": "not_analyzed"
},
"tag_value": {
"type": "nested",
"properties": {
"tagId": {
"type": "String",
"index": "not_analyzed"
},
"label": {
"type": "String",
"index": "not_analyzed"
}
}
}
}
}
}
}
}
所需的输出是获取tag_value的innerHits,但仅获取某些特定tag.id的tag_value的文档。
{
"_source": {
"includes": [
"id"
]
},
"query": {
"bool": {
"filter": [
{
"ids": {
"values": [
"021a9586-82de-4cbd-a651-e0b403d2b6da",
"fee6e022-442d-419f-943f-ad2859013330"
]
}
},
{
"nested": {
"path": "tags",
"query": {
"bool": {
"must": [
{
"term": {
"id": "xyz"
}
},
{
"nested": {
"path": "tags.tag_value",
"query": {
"bool": {
"must": [
{
"terms": {
"tags.tag_value.tagId": [
"english",
"portugese"
]
}
}
]
}
},
"inner_hits": {
"size": 4,
"_source": {
"includes": [
"tagId",
"label"
]
}
}
}
}
]
}
}
}
}
]
}
}
}
我已经尝试了上面的查询,但是没有返回innerHits。 我也曾尝试直接查询第二级嵌套文档,但是后来我无法根据第一级嵌套文档的ID过滤匹配。
感谢您的帮助。
答案 0 :(得分:0)
您还需要在第一个嵌套查询中添加inner_hits
。
{
"nested": {
"path": "tags",
"inner_hits": {}, <-- here
"query": {
"bool": {