ruby-on-rails - gem elasticsearch rails




Búsqueda elástica: cómo ver los datos indexados (5)

Tuve un problema con ElasticSearch and Rails, donde algunos datos no se indexaron correctamente debido a attr_protected. ¿Dónde almacena Elastic Search los datos indexados? Sería útil verificar si los datos indexados reales son incorrectos.

Comprobar el mapeo con el mapeo de Tire.index('models').mapping No ayuda, el campo está en la lista.


Solución de Agregación

Resolviendo el problema agrupando los datos: la respuesta de DrTech utilizó facetas en la administración de esto, pero se desaprobará según la referencia de Elasticsearch 1.0.

Warning

Facets are deprecated and will be removed in a future release. You are encouraged to
migrate to aggregations instead.

Las facetas se reemplazan por agregados: se introducen de forma accesible en Elasticsearch Guide, lo que da sentido a un ejemplo. .

Solución corta

La solución es la misma, excepto que las agregaciones requieren aggs lugar de facets y con un recuento de 0 que establece el límite máximo entero . El código de ejemplo requiere el complemento Marvel.

# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {    <= Whatever you want this to be
            "terms" : {
              "field" : "first_name",    <= Name of the field you want to aggregate
              "size" : 0
            }
        }
    }
}

Solución completa

Aquí está el código Sense para probarlo - ejemplo de un índice de casas, con un tipo de ocupante, y un campo first_name:

DELETE /houses

# Index example docs
POST /houses/occupier/_bulk
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "john" }
{ "index": {}}
{ "first_name": "mark" }


# Basic aggregation
GET /houses/occupier/_search?search_type=count
{
    "aggs" : {
        "indexed_occupier_names" : {
            "terms" : {
              "field" : "first_name",
              "size" : 0
            }
        }
    }
}

Respuesta

Respuesta que muestra el código de agregación relevante. Con dos claves en el índice, John y Mark.

    ....
    "aggregations": {
      "indexed_occupier_names": {
         "buckets": [
            {
               "key": "john",     
               "doc_count": 2     <= 2 documents matching
            },                        
            {
               "key": "mark",
               "doc_count": 1     <= 1 document matching
            }
         ]
      }
   }
   ....

Absolutamente la forma más fácil de ver sus datos indexados es verlos en su navegador. No se necesitan descargas o instalación.

Voy a suponer que tu host de búsqueda elástica es http://127.0.0.1:9200 .

Paso 1

Navegue a http://127.0.0.1:9200/_cat/indices?v para listar sus índices. Verás algo como esto:

Paso 2

Intente acceder al índice deseado: http://127.0.0.1:9200/products_development_20160517164519304

La salida se verá algo como esto:

Observe los aliases , lo que significa que también podemos acceder al índice en: http://127.0.0.1:9200/products_development

Paso 3

Navega a http://127.0.0.1:9200/products_development/_search?pretty=1 para ver tus datos:



Siguiendo el ejemplo de @JanKlimo, en el terminal todo lo que tienes que hacer es:

para ver todo el índice: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

para ver el contenido de Index products_development_20160517164519304 : $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'