Closed FangPengbo closed 12 months ago
使用方式
ActionRequest request = searchDao.explain(sql).explain().request();
原SQL
SELECT /*! TRACK_TOTAL_HITS(true) */ service_id, count(service_id) FROM sw_metrics-sum GROUP BY service_id LIMIT 0, 10
使用explain显示的 dsl如下
String dsl = searchDao.explain(sql).explain().explain()
{ "from": 0, "size": 0, "_source": { "includes": [ "service_id", "COUNT" ], "excludes": [] }, "stored_fields": "service_id", "track_total_hits": 2147483647, "aggregations": { "service_id": { "terms": { "field": "service_id", "size": 10, "shard_size": 5000, "min_doc_count": 1, "shard_min_doc_count": 0, "show_term_doc_count_error": false, "order": [ { "_count": "desc" }, { "_key": "asc" } ] }, "aggregations": { "COUNT(service_id)": { "value_count": { "field": "service_id" } } } } } }
具体code:
RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost(hostName, port, scheme) ) .setHttpClientConfigCallback(httpClientBuilder -> { httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return httpClientBuilder; }) ); ActionRequest request = searchDao.explain(sql).explain().request(); SearchResponse searchResponse = null; try { if (request instanceof SearchRequest){ SearchRequest sRequest = (SearchRequest) request; searchResponse = client.search(sRequest, RequestOptions.DEFAULT); }else if (request instanceof SearchScrollRequest){ SearchScrollRequest sRequest = (SearchScrollRequest) request; searchResponse = client.scroll(sRequest, RequestOptions.DEFAULT); } } finally { client.close(); } SearchHits hits = searchResponse.getHits();
查询出来的 hits 是空的, 但是查询正常的sql, 和条件查询都没问题. 这个聚合查询就查不出来, 使用方式哪里有问题吗
或者有办法解析SearchResponse吗
解决啦~
使用方式
原SQL
使用explain显示的 dsl如下
具体code:
查询出来的 hits 是空的, 但是查询正常的sql, 和条件查询都没问题. 这个聚合查询就查不出来, 使用方式哪里有问题吗