集計のすべてのバケットを一覧表示しようとしていますが、最初の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を使用しています
サイズパラメータは、クエリの用語の例のパラメータである必要があります。
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までの数値に明示的に設定することをお勧めします。
すべてのバケットを表示する方法は?
{
"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"
が必要です。
用語集計でサイズ(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
}
}
}
}'
しかし、ところで https://github.com/elasticsearch/elasticsearch/issues/1776
は6月22日に終了しました。その日前に私のelasticsearchがダウンロードおよびインストールされました。