基于javaapi的弹性搜索查询
当发现一个与值匹配的对象返回整个嵌套对象时,如何使用代码仅返回匹配对象基于javaapi的弹性搜索查询,java,scala,elasticsearch,Java,Scala,elasticsearch,当发现一个与值匹配的对象返回整个嵌套对象时,如何使用代码仅返回匹配对象 private def queryBuilder( field: String, value: String, parent: Option[String] = None ): BoolQueryBuilder = { val boolQuery: BoolQueryBuilder = QueryBuilders.boolQuery() parent match {
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))
}
}
为了只返回匹配的嵌套文档,您可以添加到嵌套查询中 例如
{
"query": {
"nested": {
"path": "nested_field",
"query": {
"match": { "nested_field.field1": "value_to_match" }
},
"inner_hits": {}
}
}
}
作为响应,您将找到内部\u hits
部分,其中仅包含匹配的嵌套文档