Elasticsearch 使用 Inner hits 在查询时获取关联的子文档
Inner hits 的官方介绍 这里介绍了在 nested
和 has_child
查询中使用 inner_hits
在查询文档的同时直接返回其关联的 nested object
或者 子文档的方法。
使用 inner_hits
查询的例子:
json
POST test/_search
{
"query": {
"nested": {
"path": "comments",
"query": {
"match": {"comments.number" : 2}
},
"inner_hits": {}
}
}
}
json
POST test/_search
{
"query": {
"has_child": {
"type": "my_child",
"query": {
"match": {
"number": 1
}
},
"inner_hits": {}
}
}
}
JavaAPI 中用法类似,使用 NestedQueryBuilder
或者 HasChildQueryBuilder
的 innerHit
方法实现相同的功能。
java
BoolQueryBuilder qb = boolQuery();
qb.must(boolQuery()
.should(QueryBuilders.hasChildQuery("children",
matchAllQuery(),
ScoreMode.None
).innerHit(new InnerHitBuilder(), true))
);