elasticsearch inner_hits
时间: 2023-08-04 07:06:05 浏览: 57
在 Elasticsearch 中,`inner_hits` 是一个特殊的选项,它允许在父-子关系或嵌套对象中,返回匹配查询条件的内部文档。
`inner_hits` 的作用是在查询结果中包含子文档的子集,这个子集是与父文档或包含它们的查询条件匹配的子文档。
以下是一个示例,展示了如何在 Elasticsearch 查询中使用 `inner_hits`:
```json
{
"query": {
"has_child": {
"type": "child",
"query": {
"match": {
"field": "value"
}
},
"inner_hits": {}
}
}
}
```
在上述示例中,我们使用 `has_child` 查询来查找具有特定子文档的父文档,并添加了一个空的 `inner_hits` 对象。这将返回与查询条件匹配的子文档。
当执行上述查询时,你将在查询结果中看到一个名为 `inner_hits` 的部分,其中包含了匹配的子文档。
请注意,`inner_hits` 只能在具有父-子关系或嵌套对象的情况下使用。此选项对于深层嵌套和大型数据集可能会有性能影响,因此需要谨慎使用。
相关问题
上面这个例子中 是collapse中的inner_hits先执行 还是collapse先执行
在Elasticsearch中,collapse和inner_hits是在查询阶段同时执行的,但是inner_hits的结果会在collapse之后被处理。也就是说,collapse先执行,然后inner_hits会在collapse的结果上执行,最终返回给客户端的是collapse和inner_hits处理后的结果。因此,在上面的例子中,collapse先执行,然后inner_hits会在collapse的结果上执行。
elasticsearch children排序
在Elasticsearch中对子文档进行排序可以使用`has_child`查询和`inner_hits`来实现。以下是一个示例的查询:
```json
GET your_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"child_field": {
"order": "asc"
}
}
],
"inner_hits": {
"size": 10,
"sort": [
{
"child_field": {
"order": "asc"
}
}
]
}
}
```
在这个查询中,我们使用`match_all`查询来匹配所有的文档。通过在`sort`中指定子文档字段的排序顺序,我们可以对子文档进行排序。同时,通过在`inner_hits`中指定子文档的排序顺序,我们可以对内部命中的子文档进行排序。
请根据你的具体需求和索引映射来调整这个查询。确保在使用之前详细阅读Elasticsearch官方文档以了解更多关于`has_child`查询和`inner_hits`的信息。