Spring Boot 使用Sping Boot 数据版本8.x的Elasticsearch中的复杂查询

ryhaxcpt  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(72)

如何将这个在Postman中正确工作的Elasticsearch查询转换为Sping Boot 数据版本8.x?

{
    "_source": {
        "includes": [ "sample_id", "data_type","cancer_code"],
        "excludes": [ "expressions" ]
    },    
    "query": {
        "nested": {
            "path": "expressions",
            "inner_hits": 
            {
                "_source": [ "expressions.key", "expressions.value" ]
            },
            "query": 
            {
                "match":{ "expressions.key": "SMU1" }
            }
        }
    }
}

字符串
这应该返回与Postman相同的数据。

4c8rllxm

4c8rllxm1#

试试这个代码:

Query queryNested = NestedQuery.of(n -> n
    .path("expressions")
    .innerHits(InnerHits.of(in -> in.source(SourceConfig.of(sc -> 
            sc.filter(f -> f.includes(List.of("expressions.key", "expressions.value")))))))
    .query(MatchQuery.of(m -> m.field("expressions.key").query("SMU1"))._toQuery()))._toQuery();

SearchRequest searchRequest = new SearchRequest.Builder()
    .source(SourceConfig.of(s -> s
        .filter(f -> f
            .includes(List.of("sample_id", "data_type", "cancer_code"))
            .excludes(List.of("expressions")))))
    .query(queryNested)
    .build();

字符串

相关问题