mysql 的GROUP_CONCAT函数,可以把聚合后的数据连接到一起,在ES中,把聚合函数命中的数据展示出来就行,了解了这个,就好办了
查询示例
GET bidding_pool/_search { "size": 0, "query": { "match_phrase": { "project_name": "公告" //短语查询,对项目名称 包含 “公告” 的数据做聚合 } }, "aggs": { "name": { "terms": { "field": "province_code" // 首先根据 省份编码 }, "aggs": { "name": { "terms": { "field": "content_type" // 然后再用 公告类型 , 两者联合,类似mysql group by a,b }, "aggs": { "top_users": { "top_hits": { "_source": ["id","project_name","province_name","province_code"], //返回命中数据字段 "size":100 } } } } } } } }
返回数据样例
{ "took" : 7, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 46, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 7, "buckets" : [ { "key" : "20845", "doc_count" : 23, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "合同公告", "doc_count" : 19, "top_users" : { "hits" : { "total" : { "value" : 19, "relation" : "eq" }, "max_score" : 0.24642897, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "0000f292-98df-11eb-b872-5254001bea8e", "_score" : 0.24642897, "_source" : { "id" : "0000f292-98df-11eb-b872-5254001bea8e", "project_name" : "医疗设备采购的合同公告", "province_code" : "20845", "province_name" : "广西" } } ] } } }, { "key" : "招标信息", "doc_count" : 4, "top_users" : { "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 0.1472174, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "000079a5-8568-11eb-b872-5254001bea8e", "_score" : 0.1472174, "_source" : { "id" : "000079a5-8568-11eb-b872-5254001bea8e", "project_name" : "2020-2022年隆林各族自治县储备土地中土地征收、收购、收回涉及的拆迁安置补偿项目服务(BSZC2021-G3-310033-GXGS)公开招标公告", "province_code" : "20845", "province_name" : "广西壮族自治区" } } ] } } } ] } }, { "key" : "37571", "doc_count" : 4, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 4, "top_users" : { "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 0.18565783, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "00018852-8568-11eb-b872-5254001bea8e", "_score" : 0.18565783, "_source" : { "id" : "00018852-8568-11eb-b872-5254001bea8e", "project_name" : "南京信息职业技术学院数字商务学院网络改造项目公开招标公告", "province_code" : "37571", "province_name" : "江苏省" } } ] } } } ] } }, { "key" : "37493", "doc_count" : 3, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 3, "top_users" : { "hits" : { "total" : { "value" : 3, "relation" : "eq" }, "max_score" : 0.16854326, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "00026e64-8568-11eb-b872-5254001bea8e", "_score" : 0.16854326, "_source" : { "id" : "00026e64-8568-11eb-b872-5254001bea8e", "project_name" : "上海市青浦区金泽镇社区卫生服务中心过氧化氢消毒系统采购项目公开招标公告", "province_code" : "37493", "province_name" : "上海" } } ] } } } ] } }, { "key" : "34881", "doc_count" : 2, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 2, "top_users" : { "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 0.19709426, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "0000ac09-8568-11eb-b872-5254001bea8e", "_score" : 0.19709426, "_source" : { "id" : "0000ac09-8568-11eb-b872-5254001bea8e", "project_name" : "山东省某单位水土保持方案技术服务项目公开招标公告", "province_code" : "34881", "province_name" : "山东省" } } ] } } } ] } }, { "key" : "35412", "doc_count" : 2, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 2, "top_users" : { "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 0.22880663, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "000099fd-8568-11eb-b872-5254001bea8e", "_score" : 0.22880663, "_source" : { "id" : "000099fd-8568-11eb-b872-5254001bea8e", "project_name" : "李遂镇河道清理项目公开招标公告", "province_code" : "35412", "province_name" : "北京" } } ] } } } ] } }, { "key" : "14887", "doc_count" : 1, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 1, "top_users" : { "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.1377129, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "0001101e-8568-11eb-b872-5254001bea8e", "_score" : 0.1377129, "_source" : { "id" : "0001101e-8568-11eb-b872-5254001bea8e", "project_name" : "紫金县地方公路管理站国道G236线紫金黄花至城西段及黄花至新S242线公路改建工程高、低压电缆迁移服务采购项目招标公告", "province_code" : "14887", "province_name" : "广东省" } } ] } } } ] } }, { "key" : "14928", "doc_count" : 1, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 1, "top_users" : { "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.19410507, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "000024b3-8568-11eb-b872-5254001bea8e", "_score" : 0.19410507, "_source" : { "id" : "000024b3-8568-11eb-b872-5254001bea8e", "project_name" : "湘南学院附属医院大输液药品配送采购项目公开招标公告", "province_code" : "14928", "province_name" : "湖南省" } } ] } } } ] } }, { "key" : "24543", "doc_count" : 1, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 1, "top_users" : { "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.1601093, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "0002a0e9-8568-11eb-b872-5254001bea8e", "_score" : 0.1601093, "_source" : { "id" : "0002a0e9-8568-11eb-b872-5254001bea8e", "project_name" : "吉林市丰满区江南乡人民政府吉林化工学院新址用地土壤污染情况详细调查公开招标公告", "province_code" : "24543", "province_name" : "吉林省" } } ] } } } ] } }, { "key" : "27800", "doc_count" : 1, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 1, "top_users" : { "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.17547582, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "0000f024-8568-11eb-b872-5254001bea8e", "_score" : 0.17547582, "_source" : { "id" : "0000f024-8568-11eb-b872-5254001bea8e", "project_name" : "盘州市人民医院数字化彩色超声波诊断装置等设备采购项目(二次)采购公告", "province_code" : "27800", "province_name" : "贵州省" } } ] } } } ] } }, { "key" : "28125", "doc_count" : 1, "name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "招标信息", "doc_count" : 1, "top_users" : { "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.16854326, "hits" : [ { "_index" : "bidding_pool", "_type" : "_doc", "_id" : "00013c12-8568-11eb-b872-5254001bea8e", "_score" : 0.16854326, "_source" : { "id" : "00013c12-8568-11eb-b872-5254001bea8e", "project_name" : "武汉大学中南医院武汉大学中南医院骨科手术机器人系统采购项目招标(采购)公告", "province_code" : "28125", "province_name" : "湖北省" } } ] } } } ] } } ] } } }
剩下的,就是在java里面解析这个返回结果就行