Consulta de Elasticsearch para devolver todos los registros

Resuelto John Livermore asked hace 12 años • 29 respuestas

Tengo una pequeña base de datos en Elasticsearch y, para realizar pruebas, me gustaría recuperar todos los registros. Estoy intentando utilizar una URL del formulario...

http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}

¿Alguien puede darme la URL que usaría para lograr esto, por favor?

John Livermore avatar Jan 12 '12 09:01 John Livermore
Aceptado

Creo que la sintaxis de Lucene es compatible, por lo que:

http://localhost:9200/foo/_search?pretty=true&q=*:*

El tamaño predeterminado es 10, por lo que es posible que también necesites &size=BIGNUMBERobtener más de 10 artículos. (donde BIGNUMBER equivale a un número que cree que es mayor que su conjunto de datos)

PERO, la documentación de elasticsearch sugiere que para conjuntos de resultados grandes se utilice el tipo de búsqueda de escaneo.

P.EJ:

curl -XGET 'localhost:9200/foo/_search?search_type=scan&scroll=10m&size=50' -d '
{
    "query" : {
        "match_all" : {}
    }
}'

y luego siga solicitando según lo sugiere el enlace de documentación anterior.

EDITAR: scanObsoleto en 2.1.0.

scanno proporciona ningún beneficio sobre una scrollsolicitud regular ordenada por _doc. enlace a documentos elásticos (descubierto por @christophe-roussy)

Steve Casey avatar Jan 12 '2012 07:01 Steve Casey
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
                                   ^

Tenga en cuenta el parámetro de tamaño , que aumenta los resultados mostrados del valor predeterminado (10) a 1000 por fragmento.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html

random-forest-cat avatar Apr 07 '2014 03:04 random-forest-cat

elasticsearch(ES) admite solicitudes GET o POST para obtener los datos del índice del clúster ES.

Cuando hacemos un GET:

http://localhost:9200/[your index name]/_search?size=[no of records you want]&q=*:*

Cuando hacemos un POST:

http://localhost:9200/[your_index_name]/_search
{
  "size": [your value] //default 10
  "from": [your start index] //default 0
  "query":
   {
    "match_all": {}
   }
}   

Sugeriría utilizar un complemento de interfaz de usuario con elasticsearch http://mobz.github.io/elasticsearch-head/ . Esto le ayudará a tener una mejor idea de los índices que crea y también a probarlos.

Prerak Diwan avatar Sep 28 '2015 21:09 Prerak Diwan

Nota: La respuesta se relaciona con una versión anterior de Elasticsearch 0.90. Las versiones publicadas desde entonces tienen una sintaxis actualizada. Consulte otras respuestas que puedan proporcionar una respuesta más precisa a la última respuesta que está buscando.

La siguiente consulta devolverá el NO_OF_RESULTS que le gustaría que le devolvieran.

curl -XGET 'localhost:9200/foo/_search?size=NO_OF_RESULTS' -d '
{
"query" : {
    "match_all" : {}
  }
}'

Ahora, la pregunta aquí es si desea que se devuelvan todos los registros. Naturalmente, antes de escribir una consulta, no sabrá el valor de NO_OF_RESULTS .

¿Cómo sabemos cuántos registros existen en su documento? Simplemente escriba la consulta a continuación

curl -XGET 'localhost:9200/foo/_search' -d '

Esto le daría un resultado similar al siguiente.

 {
hits" : {
  "total" :       2357,
  "hits" : [
    {
      ..................

El resultado total le indica cuántos registros hay disponibles en su documento. Entonces, esa es una buena manera de conocer el valor de NO_OF RESULTS .

curl -XGET 'localhost:9200/_search' -d ' 

Buscar todos los tipos en todos los índices

curl -XGET 'localhost:9200/foo/_search' -d '

Buscar todos los tipos en el índice foo

curl -XGET 'localhost:9200/foo1,foo2/_search' -d '

Busque todos los tipos en los índices foo1 y foo2

curl -XGET 'localhost:9200/f*/_search

Busque todos los tipos en cualquier índice que comience con f

curl -XGET 'localhost:9200/_all/type1,type2/_search' -d '

Tipos de búsqueda usuario y tweet en todos los índices

vjpandian avatar Mar 19 '2014 17:03 vjpandian