我在查询上使用source filtering只返回一小组信息,在该信息中我想要一个对象的第一个照片网址:
"query" : { ... },
"_source" : ["name", "photos.thumbnail_url"]
当然,对于每个项目存储的所有照片都会返回thumbnail_url
。
有没有办法只使用源过滤获得第一张嵌套照片的thumbnail_url
?
(我很欣赏这样做的一种方法是分别索引第一张照片,只选择源过滤器以包含那个单独的字段,但我问的是没有单独的字段是否可行。)
(我已经猜到了一些没有运气的方法:photos.0.thumbnail_url
,photos[0].thumbnail_url
,photos.first.thumbnail_url
)
答案 0 :(得分:1)
只是尝试使用inner_hits
来尝试,因为我不知道您的映射{
"size": 5,
"_source": ["name"],
"query": {
"filtered": {
"query": {
"match": {
"name": "whatever"
}
},
"filter": {
"nested": {
"path": "photos",
"query": {
"match_all": {}
},
"inner_hits": {
"size": 1,
"_source": ["thumbnail_url"]
}
}
}
}
}
}
或使用script field:
"script_fields": {
"FIELD": {
"script": "urls=_source.photos.thumbnail_url;return urls[0]"
}
}
我不认为可以通过源过滤来实现这一点。