curl -XGET 'http://localhost:9200/alias-product/product/_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[tmp]) { combined[tmp] = 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[tmp]) { combined[tmp] = 1 } }; return combined",
         "reduce_script": "reduced = [:]; for (a in _aggs) {  for (entry in a) { word = entry.key; if (!reduced[word] ) { reduced[word] = entry.value; }  } }; return reduced"
      }
    }
  }
}'



本文转自whk66668888 51CTO博客,原文链接:http://blog.51cto.com/12597095/1908017