Spring Data Elasticsearch - 查询的根级别是否支持 Inner Hit?

Spring Data Elasticsearch - Is Inner Hit supported at root level on query?

我正在尝试使用 ElasticsearchOperations 编写如下查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "dialogLines",
            "query": {
              "match_phrase": {
                "dialogLines.text": {
                  "query": "No problem"
                }
              }
            }
          }
        }
      ]
    }
  },
  "collapse": {
    "field": "movieId",
    "inner_hits" : {
        "name": "by_movie",
        "collapse" : {"field" : "boundaryGroup"},
        "sort": [{ "boundaryStartInMillis": "desc" }],
        "size": 6
    }
  }
}

我知道NestedQuery支持innerHit(InnerHitBuilder innerHitBuilder),但是NativeSearchQuery类型的根级查询没有那个方法。

有没有办法使用 ElasticsearchOperations 编写此查询?

我的版本是org.springframework.data:spring-data-elasticsearch:3.2.9.RELEASE

运行 弹性搜索 v6.8.2

当您使用 NativeSearchQuery 创建查询时,您通常使用

Query query = new NativeSearchQueryBuilder()
  .withQuery(queryBuilder)
  .build();

queryBuilder 参数是 org.elasticsearch.index.query.QueryBuilder 的任何实现,因此您可以使用任何您喜欢的 Elasticsearch 查询构建器。

编辑 29.09.2020

NativeSsearchQuery 支持使用 NativeSearchQueryBuilder.withCollapseField(String) 方法折叠字段。但是还没有支持崩溃场的内部命中。 我创建了 https://jira.spring.io/browse/DATAES-939 来解决这个问题。