aggregation aggregations - Mostrar todos los resultados / cubos de agregación de Elasticsearch y no solo 10




example distinct (4)

Estoy intentando enumerar todos los depósitos en una agregación, pero parece mostrar solo los primeros 10.

Mi búsqueda:

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

Devoluciones:

{
  "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
      } ]
    }
  }
}

Tengo muchas más de 10 claves para esta agregación. En este ejemplo, tendría 145 claves, y quiero el conteo de cada una de ellas. ¿Hay alguna paginación en cubos? ¿Puedo obtener todos?

Estoy usando Elasticsearch 1.1.0


Answers

¿Cómo mostrar todos los cubos?

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

Nota

  • "size":10000 Obtenga como máximo 10000 cubos. El valor predeterminado es 10.

  • "size":0 En resultado, "hits" contiene 10 documentos por defecto. No los necesitamos

  • De forma predeterminada, doc_count ordena los doc_count en orden decreciente.

¿Por qué Fielddata is disabled on text fields by default error Fielddata is disabled on text fields by default ?

Porque los datos de campo están desactivados en los campos de texto de forma predeterminada . Si no ha elegido explícitamente una asignación de tipo de campo, tiene las asignaciones dinámicas predeterminadas para los campos de cadena .

Entonces, en lugar de escribir "field": "your_field" necesitas tener "field": "your_field.keyword" .


El parámetro param debe ser un parámetro para el ejemplo de consulta de términos:

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

Como se menciona en el documento, solo funciona para la versión 1.1.0 en adelante

Editar

Actualizando la respuesta basada en @PhaedrusTheGreek comment.

size:0 configuración size:0 está obsoleto en 2.x en adelante, debido a problemas de memoria infligidos en su clúster con valores de campo de cardinalidad alta. Puedes leer más sobre esto en el tema de Github aquí .

Se recomienda establecer explícitamente un valor razonable para el size un número entre 1 y 2147483647.







elasticsearch aggregation