Elasticsearch(9)---集約クエリ(バケット重合)
前はElasticsearch重合クエリ話したメトリックの集約:Elasticsearch(8)---集計クエリ(メトリック重合)
说明
本論文では、公式文書のバージョン7.3をElasticsearchを参照して。バケット集計
概念
:バケットはバケットとして理解することができ、それはSQLで同等のポイントをバケット、バケツに入れて一定の要件を満たしている文書の内容、を経由して、グループ。
キーバレルの話このブログはTerms Aggregation
、次のとおりです。Filter Aggregation
、Histogram Aggregation
、Range Aggregation
、Date Aggregation
、。
まず、インデックスを作成し、データ
1、インデックスを作成するには
DELETE cars
PUT cars
{
"mappings": {
"properties": {
"price": {
"type":"long"
},
"color": {
"type":"keyword"
},
"brand": {
"type":"keyword"
},
"sellTime": {
"type":"date"
}
}
}
}
プロパティフィールド:価格、色、ブランド、販売時間
2、インデックスデータを追加
POST /cars/_bulk
{ "index": {}}
{ "price" : 80000, "color" : "red", "brand" : "BMW", "sellTime" : "2014-01-28" }
{ "index": {}}
{ "price" : 85000, "color" : "green", "brand" : "BMW", "sellTime" : "2014-02-05" }
{ "index": {}}
{ "price" : 120000, "color" : "green", "brand" : "Mercedes", "sellTime" : "2014-03-18" }
{ "index": {}}
{ "price" : 105000, "color" : "blue", "brand" : "Mercedes", "sellTime" : "2014-04-02" }
{ "index": {}}
{ "price" : 72000, "color" : "green", "brand" : "Audi", "sellTime" : "2014-05-19" }
{ "index": {}}
{ "price" : 60000, "color" : "red", "brand" : "Audi", "sellTime" : "2014-06-05" }
{ "index": {}}
{ "price" : 40000, "color" : "red", "brand" : "Audi", "sellTime" : "2014-07-01" }
{ "index": {}}
{ "price" : 35000, "color" : "blue", "brand" : "Honda", "sellTime" : "2014-08-12" }
成功かどうかを確認するために3、
コマンド
GET /_cat/count/cars?v
私たちは、インデックスが存在することを確認することができ、および8件の文書データがあります。
二、利用規約の集約
7.3公式文書:規約の集約
概念
:アイテムの各固有値の重合。
サブブランドのバケットによると1、
GET cars/_search?size=0
{
"aggs" : {
"genres" : {
"terms" : { "field" : "brand" }
}
}
}
結果に戻ります
唯一のドキュメントの数を示す前に、図2に示すように、バレルのバレルポイント3
GET cars/_search?size=0
{
"aggs" : {
"cars" : {
"terms" : {
"field" : "brand",
"size" : 3
}
}
}
}
リターン
文書の数は、最初の3つのバケットに図から見ることができます。
3、サブバケットソート
GET cars/_search?size=0
{
"aggs" : {
"genres" : {
"terms" : {
"field" : "brand",
"order" : { "_count" : "asc" }
}
}
}
}
図4は、文書の数が水槽3より大きい示します
GET cars/_search?size=0
{
"aggs" : {
"brands" : {
"terms" : {
"field" : "brand",
"min_doc_count": 3
}
}
}
}
図5に示すように、バレルのために正確に指定されたエントリポイントを使用して
GET /cars/_search?size=0
{
"aggs" : {
"JapaneseCars" : {
"terms" : {
"field" : "brand",
"include" : ["BMW", "Audi"]
}
}
}
}
ここだけそれについて教えてくださいいくつかの一般的な、より多くの利用規約集約カフェを表示します。
三、フィルタ集約
Filter概念
:特定のフィールドと特定の値を指し、規約集約、重合の特定の値のみに基づいてフィルタリングされていると言うことができます。
1、BMWブランドのためのフィルタは、バケツ、バレルを取得し、平均値を見つけます
GET /cars/_search?size=0
{
"aggs" : {
"brands" : {
"filter" : { "term": { "brand": "BMW" } },
"aggs" : {
"avg_price" : { "avg" : { "field" : "price" } }
}
}
}
}
リターン
2は、BMWブランドの取得するためにフィルタまたは色の緑のバケツです
Filters概念
:フィルタAggreagtionは、単一のバケットに応じて、1つのフィルタのみを指定することができます。あなただけ使用して、重合のための具体的な値のみを複数必要な場合Aggreagtionに複数の要求をフィルタリングします。
Aggreagationは、上記課題を解決するために使用できるフィルタは、それはまた、特定の複数の値を前記に重合することができ、複数のフィルタを指定することができます。
GET /cars/_search?size=0
{
"size": 0,
"aggs" : {
"cars" : {
"filters" : {
"filters" : {
"colorBucket" : { "match" : { "color" : "red" }},
"brandBucket" : { "match" : { "brand" : "Audi" }}
}
}
}
}
}
リターン
四、ヒストグラムAggreagtion
公式文書:ヒストグラムAggreagtion
概念
ヒストグラム重合条件と同様の、データ・パケットでは、パケットの差分値に応じて、それは規約フィールドであり、フィールドヒストグラムは、指定された間隔に応じてグループ化することができます
万バレル点の価格帯に応じて1、
GET /cars/_search?size=0
{
"aggs" : {
"prices" : {
"histogram" : {
"field" : "price",
"interval" : 10000
}
}
}
}
リターン
ポイント10,000バレルの価格範囲に応じて2、及びバケット文書が表示されていないされていない場合は、バレル
私たちは何のドキュメントを検索することはできません上記のサブバレルの価格はまた、我々が望む場合は5000でゼロに6000には、バケットがバレル表示されていない文書がないことを示します
GET /cars/_search?size=0
{
"aggs" : {
"prices" : {
"histogram" : {
"field" : "price",
"interval" : 10000,
"min_doc_count" : 1
}
}
}
}
リターン
五、レンジ集約
公式文書:レンジ集約
概念
:タンク、したがって重合として渡されたユーザのパラメータの範囲。同じ要求において、複数組のバケットとして、各範囲は範囲を通過することができます。
1、サブバレルの価格帯に応じて
GET /cars/_search?size=0
{
"aggs" : {
"price_ranges" : {
"range" : {
"field" : "price",
"ranges" : [
{ "to" : 50000 },
{ "from" : 5000, "to" : 80000 },
{ "from" : 80000 }
]
}
}
}
}
リターン
また、キーの名前を指定することができます
GET /cars/_search?size=0
{
"aggs" : {
"price_ranges" : {
"range" : {
"field" : "price",
"ranges" : [
{ "key" : "xiaoyu", "to" : 50000 },
{ "key" : "baohan", "from" : 5000, "to" : 80000 },
{ "key" : "dayu", "from" : 80000 }
]
}
}
}
}
リターン
六、日集計
公式文書:日付ヒストグラム集計および日付範囲の集約
Date Histogram概念
ヒストグラム形式での重合のために、時間データは、特性が実質的ヒストグラム凝集に一致します。
1月あたりの月の樽によってショーの販売
注意
これは、公式ドキュメント間隔が、calendar_intervalが、このアクションに従い、エラーではない、なぜ知りません
POST /cars/_search?size=0
{
"aggs" : {
"sales_over_time" : {
"date_histogram" : {
"field" : "sellTime",
"interval" : "1M",
"format" : "yyyy-MM-dd"
}
}
}
}
リターン
2.時間間隔を指定されたパーツのキット
Date Range概念
:重合のデータフォーマットの時間範囲は、実質的に特徴範囲Aggreagtionと一致します。
POST /cars/_search?size=0
{
"aggs": {
"range": {
"date_range": {
"field": "sellTime",
"format": "MM-yyyy",
"ranges": [
{ "to": "now-10M/M" },
{ "from": "now-10M/M" }
]
}
}
}
}
上記10ヶ月前、10ヶ月前後にバケツに分けて分割バレルことを意味
参照
1、Elasticsearchのコア技術と戦闘---ルアン鳴(イーベイプロントプラットフォームテクニカルディレクター
我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(14)