sonyet 发表于 2019-1-29 09:34:18

elasticsearch 多次聚合

  curl -XGET 'http://localhost:9200/alias-*/*/_search?pretty' -d '{
  "size" : 0,
  "query" : {
  "function_score" : {
  "query" : {
  "filtered" : {
  "filter" : {
  "bool" : {
  "should" : [ {
  "match" : {
  "_all" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  }, {
  "match" : {
  "company_name" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  }, {
  "match" : {
  "title" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  } ],
  "minimum_should_match" : "1"
  }
  }
  }
  },
  "functions" : [ {
  "filter" : {
  "match" : {
  "_all" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  },
  "weight" : 2.0
  }, {
  "filter" : {
  "match" : {
  "company_name" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  },
  "weight" : 8.0
  }, {
  "filter" : {
  "match" : {
  "title" : {
  "query" : "电子",
  "type" : "boolean",
  "operator" : "AND"
  }
  }
  },
  "weight" : 4.0
  }, {
  "filter" : {
  "range" : {
  "seling_auction_cnt" : {
  "from" : 0,
  "to" : null,
  "include_lower" : false,
  "include_upper" : true
  }
  }
  },
  "weight" : 1.0
  }, {
  "field_value_factor" : {
  "field" : "company_score",
  "factor" : 1.0E-6
  }
  } ],
  "score_mode" : "sum"
  }
  },
  "aggs" : {
  "agg" : {
  "terms" : {
  "field" : "member_id",
  "size" : 0,
  "order" : {
  "top_hit" : "desc"
  }
  },
  "aggregations" : {
  "top_hit" : {
  "max" : {
  "script" : {
  "inline" : "_score"
  }
  }
  }
  }
  },
  "agg1" : {
  "scripted_metric": {
  "init_script": "_agg[\"prd\"] = []",
  "map_script": "if(doc[\"cat2_id\"].value) {_agg.prd.add(doc[\"cat2_id\"].value.toString())}",
  "combine_script": "combined = [:]; for (tmp in _agg.prd) { if(!combined) { combined = 1 } }; return combined",
  "reduce_script": "reduced = []; for (a in _aggs) { for (entry in a) {reduced.add(entry.key);} }; return reduced"
  }
  },
  "agg2" : {
  "scripted_metric": {
  "init_script": "_agg[\"prd\"] = []",
  "map_script": "if(doc[\"cat2_id\"].value) {_agg.prd.add(doc[\"cat2_id\"].value.toString())}",
  "combine_script": "combined = [:]; for (tmp in _agg.prd) { if(!combined) { combined = 1 } }; return combined",
  "reduce_script": "reduced = [:]; for (a in _aggs) {for (entry in a) { word = entry.key; if (!reduced ) { reduced = entry.value; }} }; return reduced"
  }
  }
  }
  }'



页: [1]
查看完整版本: elasticsearch 多次聚合