Elasticsearch(9)---集約クエリ(バケット重合)

Elasticsearch(9)---集約クエリ(バケット重合)

前はElasticsearch重合クエリ話したメトリックの集約Elasticsearch(8)---集計クエリ(メトリック重合)

说明本論文では、公式文書のバージョン7.3をElasticsearchを参照して。バケット集計

概念バケットはバケットとして理解することができ、それはSQLで同等のポイントをバケット、バケツに入れて一定の要件を満たしている文書の内容、を経由して、グループ

キーバレルの話このブログはTerms Aggregation、次のとおりです。Filter AggregationHistogram AggregationRange AggregationDate 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のコア技術と戦闘---ルアン鳴(イーベイプロントプラットフォームテクニカルディレクター

2、バージョンES7.3公式集計クエリAPI

。3、elasticsearch重合--Bucket集計

。4、ElasticSearch-重合バケツ




 我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(14)


おすすめ

転載: www.cnblogs.com/qdhxhz/p/11575408.html