Elasticsearch QueryBuilders 可以获取所有有孩子的父母

问题描述 投票:0回答:1

Query query = new NativeSearchQueryBuilder()我的文档在 Elastic Search 映射中既是父文档又是子文档。由于子项经常更新,因此选择了这种连接而不是嵌套文档。 我现在想找到每一位有孩子和没有父母的父母。

HasChildQueryBuilder hQuery = QueryBuilders
       .hasChildQuery("instance", QueryBuilders
             .hasChildQuery("instance_permission", terms));

我在互联网上发现了这个,但它似乎已经改变并且不再有效。

Query query = new NativeSearchQueryBuilder()
       .withQuery(QueryBuilders.boolQuery().
        must.(QueryBuilders.matchQuery("relation_type", "parent))
        must. ****  // parents that has children query  ****
       .build();  

有人可以帮我完成这个查询吗?

java elasticsearch parent-child query-builder
1个回答
0
投票

这有效 // JoinQueryBuilders.hasChildQuery


Query query = new NativeSearchQueryBuilder()
       .withQuery(QueryBuilders.boolQuery()
          .must(QueryBuilders.matchQuery("relation_type", "parent"))
          .must(JoinQueryBuilders.hasChildQuery("child", QueryBuilders.matchAllQuery(), ScoreMode.None)))
       .withPageable(pageRequest)
       .build();
SearchHits<Asset> searchHits = elasticsearchRestTemplate.search(query, Asset.class);

© www.soinside.com 2019 - 2024. All rights reserved.