java - 使用 Java api 进行弹性搜索查询
问题描述
当找到一个与该值匹配的值返回整个嵌套对象时,我如何现在只返回匹配的对象与我的代码?
private def queryBuilder(
field: String,
value: String,
parent: Option[String] = None
): BoolQueryBuilder = {
val boolQuery: BoolQueryBuilder = QueryBuilders.boolQuery()
parent match {
case Some(parentName) =>
boolQuery.filter(
QueryBuilders
.nestedQuery(
parentName,
QueryBuilders
.boolQuery()
.must(QueryBuilders.matchQuery(field, value)),
ScoreMode.None
)
)
case None => boolQuery.must(QueryBuilders.matchQuery(field, value))
}
}
解决方案
为了只返回匹配的嵌套文档,您可以添加inner_hit
到嵌套查询中。
例如
{
"query": {
"nested": {
"path": "nested_field",
"query": {
"match": { "nested_field.field1": "value_to_match" }
},
"inner_hits": {}
}
}
}
作为回应,您会发现inner_hits
仅包含匹配嵌套文档的部分。
推荐阅读
- asp.net-web-api - 如何使用 .Net Core 2.2 创建动态构建器 Odata?
- java - 无法在 Android 中删除文件
- html - 单向绑定无响应功能
- javascript - 使用 Vue-i18n 翻译来自脚本的文本
- symfony - 在没有 /usr/local/bin/composer 的服务器上使用 EasyDeployBundle 托管 Symfony 4 应用程序
- jquery - 当我添加溢出时,fancybox 正在跳转我的内容:隐藏到页面上只能看到 6 个图像
- qt - Qt 应用程序无法正确启动(0xc000007b)
- android - 如何在 Nativescript 中使用外部 sdk
- java - 用于复合 API 调用的 Spring Cloud Gateway?
- gwt - 隐藏