执行partial_fields
过滤器/查询时是否可以使用nested
参数?
例如,此查询将仅返回我要查找的字段hits
:
{
"query": {
"filtered": {
"query": {
"ids": {
"type": "users",
"values": [
"111"
]
}
},
"filter": {
"nested": {
"path": "entitlements",
"filter": {
"bool": {
"must": [
{
"term": {
"program": "program-a"
}
}
]
}
},
"inner_hits": {
"size": 999
}
}
}
}
},
"partial_fields": {
"partial": {
"include": [
"entitlements.accountNumber",
"entitlements.name",
"entitlments.numbers"
]
}
}
}
但是inner_hits
部分,不会返回任何字段。
"inner_hits": {
"entitlements": {
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "myGreatIndex",
"_type": "users",
"_id": "111",
"_nested": {
"field": "entitlements",
"offset": 0
},
"_score": 1,
"fields": {
"partial": [
{}
]
}
}
]
}
}
}
有没有办法将其应用于inner_hits
?
答案 0 :(得分:5)
在inner_hits
部分内,您可以改用source filtering。 partial_fields
适用于外部匹配,_source
适用于inner_hits
。
因此,您可以像这样指定inner_hits
:
"inner_hits": {
"size": 999,
"_source": [
"accountNumber",
"name",
"numbers"
]
}
请注意,在inner_hits
结果中,您仍会获得一个空的partial
数组,但您需要的字段会显示在_source
部分中。
另外值得注意的是,如果您使用不合格的名称指定partial_fields
(请参阅下文),则部分字段会显示在您的inner_hits
结果中,但不会外部命中了。所以你需要弄清楚哪种方法最适合你。
"partial_fields": {
"partial": {
"include": [
"accountNumber",
"name",
"numbers"
]
}
}