1. ホーム
  2. エラスチックサーチ

[解決済み】Elasticsearchの集計結果/バケットを10個だけでなく全て表示する。

2022-04-22 03:15:40

質問

アグリゲーションですべてのバケットを一覧表示しようとしているのですが、最初の10個しか表示されないようです。

私の検索

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 0, 
   "aggregations": {
      "bairro_count": {
         "terms": {
            "field": "bairro.raw"
         }
      }
   }
}'

を返します。

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 16920,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "bairro_count" : {
      "buckets" : [ {
        "key" : "Barra da Tijuca",
        "doc_count" : 5812
      }, {
        "key" : "Centro",
        "doc_count" : 1757
      }, {
        "key" : "Recreio dos Bandeirantes",
        "doc_count" : 1027
      }, {
        "key" : "Ipanema",
        "doc_count" : 927
      }, {
        "key" : "Copacabana",
        "doc_count" : 842
      }, {
        "key" : "Leblon",
        "doc_count" : 833
      }, {
        "key" : "Botafogo",
        "doc_count" : 594
      }, {
        "key" : "Campo Grande",
        "doc_count" : 456
      }, {
        "key" : "Tijuca",
        "doc_count" : 361
      }, {
        "key" : "Flamengo",
        "doc_count" : 328
      } ]
    }
  }
}

この集計には10以上のキーがあります。この例では145のキーがあり、それぞれのカウントが欲しいのです。バケツにはページネーションがあるのでしょうか?すべてのバケットを取得することはできますか?

Elasticsearch 1.1.0を使用しています。

どのように解決するのですか?

size パラメータは、terms クエリの例のパラメータにする必要があります。

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 0,
   "aggregations": {
      "bairro_count": {
         "terms": {
            "field": "bairro.raw",
             "size": 10000
         }
      }
   }
}'

使用方法 size: 0 は、ESバージョン2以前用です。

設定 size:0 は 2.x 以降では非推奨です。これは、カーディナリティの高いフィールド値によってクラスタにもたらされるメモリの問題のためです。詳しくは github を参照してください。 課題はこちら .

には、明示的に妥当な値を設定することをお勧めします。 size を1〜2147483647の間で指定してください。