TransportClient client = EsTransportClient.getInstance(); SearchRequestBuilder searchRequestBuilder = client.prepareSearch(""); searchRequestBuilder.setIndices("megacorp"); searchRequestBuilder.setTypes("employee"); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); QueryBuilder termQueryBuilder1 = QueryBuilders.termQuery("last_name", "smith"); //嵌套類型查詢 QueryBuilder tags = QueryBuilders.nestedQuery("tags", QueryBuilders.termQuery("tags.userid", "1a"), ScoreMode.Total); boolQueryBuilder.must(tags); boolQueryBuilder.must(termQueryBuilder1); searchRequestBuilder.setQuery(boolQueryBuilder); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
經過查詢后發現boolQueryBuilder結構是這樣的,符合預期可以查詢成功
{ "bool" : { "must" : [ { "nested" : { "query" : { "term" : { "tags.userid" : { "value" : "1a", "boost" : 1.0 } } }, "path" : "tags", "ignore_unmapped" : false, "score_mode" : "sum", "boost" : 1.0 } }, { "term" : { "last_name" : { "value" : "smith", "boost" : 1.0 } } } ], "adjust_pure_negative" : true, "boost" : 1.0 } }