web-dev-qa-db-ja.com

10個だけでなく、すべてのElasticsearch集計結果/バケットを表示します

集計のすべてのバケットを一覧表示しようとしていますが、最初の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を使用しています

124
Samuel Rizzo

サイズパラメータは、クエリの用語の例のパラメータである必要があります。

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

ドキュメントに記載されているように、バージョン1.1.0以降でのみ機能します

編集

@PhaedrusTheGreekコメントに基づいて回答を更新します。

__xsize:0の設定は、カーディナリティの高いフィールド値を使用してクラスターでメモリの問題が発生するため、2.x以降では非推奨です。 github issue here で詳細を読むことができます。

sizeの妥当な値を1から2147483647までの数値に明示的に設定することをお勧めします。

167
keety

すべてのバケットを表示する方法は?

{
  "size": 0,
  "aggs": {
    "aggregation_name": {
      "terms": {
        "field": "your_field",
        "size": 10000
      }
    }
  }
}

注意

  • "size":10000最大10000バケットを取得します。デフォルトは10です。

  • "size":0結果として、"hits"にはデフォルトで10個のドキュメントが含まれます。それらは必要ありません。

  • デフォルトでは、バケットはdoc_countによって降順で並べられます。


なぜFielddata is disabled on text fields by defaultエラーが発生するのですか?

なぜなら fielddataはデフォルトではテキストフィールドでは無効になっている であるためです。フィールドタイプマッピングを明示的に選択していない場合は、 文字列フィールドのデフォルトのダイナミックマッピング になります。

したがって、"field": "your_field"を記述する代わりに、"field": "your_field.keyword"が必要です。

21
sam

用語集計でサイズ(2番目のサイズ)を10000に増やすと、サイズ10000のバケットが取得されます。デフォルトでは10に設定されます。また、検索結果を表示する場合は、1番目のサイズを1にするだけです。 ESは検索と集約の両方をサポートしているため、1つのドキュメントを参照してください。

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

         }
      }
   }
}'
2
wonder

しかし、ところで https://github.com/elasticsearch/elasticsearch/issues/1776

は6月22日に終了しました。その日前に私のelasticsearchがダウンロードおよびインストールされました。

1
checkitout