1. 程式人生 > >Elasticsearch 常見查詢

Elasticsearch 常見查詢

1、查詢所有
{
    "query": {
        "match_all": {}
    }
}

2、count查詢
{
    "query": {
        "match_all": {}
    },
    "aggs": {
        "agg_start_count": {
          "value_count": {
            "field": "start_time"
          }
        }
    }
}

3、按顏色分組查詢統計(按顏色分組,agg_color為自定義名稱)
{
  "size": 0,
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color"
      }
    }
  }
}

4、按顏色分組並且統計每種顏色的平均價格
{
  "size": 0,
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

5、按顏色分組並且統計沒用顏色的平均價格、製造廠商
{
  "size": 0,
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        },
        "make": {
          "terms": {
            "field": "make"
          }
        }
      }
    }
  }
}

5、按顏色分組並且統計沒用顏色的平均價格、製造廠商,每個製造廠商的最高價格和最低價格{
  "size": 0,
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        },
        "make": {
          "terms": {
            "field": "make"
          },
          "aggs": {
            "agg_min": {
              "min": {
                "field": "price"
              }
            },
            "agg_max": {
              "max": {
                "field": "price"
              }
            }
          }
        }
      }
    }
  }
}

6、同時按季度、按每個汽車品牌計算銷售總額和按季度全部品牌的彙總銷售金額。
{
  "size": 0,
  "aggs": {
    "agg_month": {
      "date_histogram": {
        "field": "sold",
        "interval": "quarter",
        "format": "yyyy-MM-dd"
      },
      "aggs": {
        "agg_make": {
          "terms": {
            "field": "make"
          },
          "aggs": {
            "agg_sum": {
              "sum": {
                "field": "price"
              }
            }
          }
        },
        "total_sum": {
          "sum": {
            "field": "price"
          }
        }
      }
    }
  }
}

7、福特在售車有多少種顏色
{
  "size": 0,
  "query": {
    "match": {
      "make": "ford"
    }
  },
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color"
      }
    }
  }
}

8、福特汽車與 所有 汽車平均售價的比較
{
  "size": 0,
  "query": {
    "match": {
      "make": "ford"
    }
  },
  "aggs": {
    "agg_price": {
      "avg": {
        "field": "price"
      }
    },
    "agg_all": {
      "global": {},
      "aggs": {
        "agg_all_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

9、售價在 $10,000 美元之上的所有汽車同時也為這些車計算平均售價
{
  "size": 0,
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "price": {
            "gte": 10000
          }
        }
      }
    }
  },
  "aggs": {
    "agg_avg_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

10、查詢ford製造廠商、同時也想在頁面上提供更豐富的資訊,包括(與搜尋匹配的)上個月度汽車的平均售價。
{
  "size": 0,
  "query": {
    "match": {
      "make": "ford"
    }
  },
  "aggs": {
    "recent_sales": {
      "filter": {
        "range": {
          "sold": {
            "from": "now-1M"
          }
        }
      },
      "aggs": {
        "average_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

11、按照汽車顏色建立一個銷售條狀圖表,但按照汽車平均售價的升序進行排序
{
  "size": 0,
  "aggs": {
    "agg_color": {
      "terms": {
        "field": "color",
        "order": {
          "agg_avg_price": "asc"
        }
      },
      "aggs": {
        "agg_avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

12、每月有多少顏色的車被售出:
{
  "size": 0,
  "aggs": {
    "agg_histogram": {
      "date_histogram": {
        "field": "sold",
        "interval": "month",
        "format": "yyyy-MM-dd"
      },
      "aggs": {
        "agg_cardinality_color": {
          "cardinality": {
            "field": "color"
          }
        }
      }
    }
  }
}

13、巢狀查詢
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "eggs" 
          }
        },
        {
          "nested": {
            "path": "comments", 
            "query": {
              "bool": {
                "must": [ 
                  {
                    "match": {
                      "comments.name": "john"
                    }
                  },
                  {
                    "match": {
                      "comments.age": 28
                    }
                  }
                ]
              }
            }
          }
        }
      ]
}}}