首页 > 解决方案 > Spring数据elasticsearchQuery等价于HasChildQuery

问题描述

  {
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "Id": "xxxxxx"
          }
        },
        {
          "has_child": {
            "type": "component",
            "query": {
              "bool": {
                "should": [
                  {
                    "term": {
                      "type": "xxxxx"
                    }
                  },
                  {
                    "term": {
                      "name": "xxxxx"
                    }
                  }
                ]
              }
            },
            "inner_hits": {}
          }
        }
      ]
    }
  }
}

想要使用 Criteria 或 NativeSearchQueryBuilder 替换上述查询。我已经尝试关注它并长时间搜索。

QueryBuilder parentQuery = QueryBuilders.matchQuery("Id", Id);
HasChildQueryBuilder childQuery = JoinQueryBuilders.hasChildQuery("component",
        QueryBuilders.termQuery("type","xxxxx"), ScoreMode.None);
HasChildQueryBuilder childQuery2 = JoinQueryBuilders.hasChildQuery("component",
        QueryBuilders.termQuery("name","xxxxx"), ScoreMode.None);
NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(parentQuery)
        .withQuery(childQuery).withQuery(childQuery2).build();
SearchHits<ENTITY> recipeSearchHits= elasticsearchOperations.search(query, ENTITY.class);

遵循官方弹簧数据文档https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.jointype但我在这里做错了,所以它继续循环。

标签: spring-bootelasticsearchspring-dataspring-data-elasticsearch

解决方案


推荐阅读