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

ryhaxcpt  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(154)

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

  1. {
  2. "_source": {
  3. "includes": [ "sample_id", "data_type","cancer_code"],
  4. "excludes": [ "expressions" ]
  5. },
  6. "query": {
  7. "nested": {
  8. "path": "expressions",
  9. "inner_hits":
  10. {
  11. "_source": [ "expressions.key", "expressions.value" ]
  12. },
  13. "query":
  14. {
  15. "match":{ "expressions.key": "SMU1" }
  16. }
  17. }
  18. }
  19. }

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

4c8rllxm

4c8rllxm1#

试试这个代码:

  1. Query queryNested = NestedQuery.of(n -> n
  2. .path("expressions")
  3. .innerHits(InnerHits.of(in -> in.source(SourceConfig.of(sc ->
  4. sc.filter(f -> f.includes(List.of("expressions.key", "expressions.value")))))))
  5. .query(MatchQuery.of(m -> m.field("expressions.key").query("SMU1"))._toQuery()))._toQuery();
  6. SearchRequest searchRequest = new SearchRequest.Builder()
  7. .source(SourceConfig.of(s -> s
  8. .filter(f -> f
  9. .includes(List.of("sample_id", "data_type", "cancer_code"))
  10. .excludes(List.of("expressions")))))
  11. .query(queryNested)
  12. .build();

字符串

相关问题