我有一个如下所示的索引:
{
"mappings":{
"authors":{
"properties":{
"books":{
"type":"nested",
"properties":{
"title":{"type":"string"},
"firstSentence":{"type":"string"},
"isbn":{"type":"string"},
"publishDate":{"type":"date"},
}
},
"firstName":{"type":"string"},
"lastName":{"type":"string"},
"birthday":{"type":"date"},
}
}
}
我通过Java客户端查询此索引。对于这个查询,我不关心作者;所有我想要回来的都是书。例如,我想在标题和第一句中找到所有带有“Hello”字样的书。
目前,我使用嵌套查询返回作者列表,然后我手动解析该列表以获取书籍。有没有办法让Elasticsearch直接返回书籍清单?我使用的是Elasticsearch版本1.5.2和Jest 0.1.6
答案 0 :(得分:1)
不,结果是您注入的文档。您可以使用源过滤来限制返回的文档的字段,这样您只能返回嵌套的文档。但这些将始终在嵌套父级的范围内。因此,如果您找到两位作者,每本书都有几本书,那么您可以使用嵌套文档获得两个结果。