rails ruby-on-rails elasticsearch attr-protected

ruby on rails - rails - Búsqueda elástica: cómo ver los datos indexados



elasticsearch model gem (7)

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 } ] } } ....

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.


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:


Probablemente la forma más sencilla de explorar su clúster ElasticSearch es usar elasticsearch-head .

Puede instalarlo haciendo:

cd elasticsearch/ ./bin/plugin -install mobz/elasticsearch-head

Luego (suponiendo que ElasticSearch ya se está ejecutando en su equipo local), abra una ventana del navegador para:

http://localhost:9200/_plugin/head/

Alternativamente, puede usar curl desde la línea de comando, por ejemplo:

Compruebe la asignación de un índice:

curl -XGET ''http://127.0.0.1:9200/my_index/_mapping?pretty=1''

Obtenga algunos documentos de muestra:

curl -XGET ''http://127.0.0.1:9200/my_index/_search?pretty=1''

Vea los términos reales almacenados en un campo particular (es decir, cómo se ha analizado ese campo):

curl -XGET ''http://127.0.0.1:9200/my_index/_search?pretty=1'' -d '' { "facets" : { "my_terms" : { "terms" : { "size" : 50, "field" : "foo" } } } }

Más disponible aquí: http://www.elasticsearch.org/guide

ACTUALIZACIÓN: Sense plugin en Marvel

Con mucho, la forma más sencilla de escribir comandos de estilo curl para Elasticsearch es el complemento Sense en Marvel .

Viene con resaltado de fuente, sangría bonita y autocompletar.

Nota: Marvel .



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''


Una herramienta que me ayuda mucho a depurar ElasticSearch es ElasticHQ . Básicamente, es un archivo HTML con algo de JavaScript. No es necesario instalarlo en ningún lugar, ni mucho menos en el propio ES: simplemente descárguelo, descomprima int y abra el archivo HTML con un navegador.

No estoy seguro de que sea la mejor herramienta para usuarios intensivos de ES. Sin embargo, es realmente práctico para quien tenga prisa ver las entradas.