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 .
Si está usando Google Chrome, puede simplemente usar esta extensión nombrada como Sense, también es una herramienta si usa Marvel.
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig
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.
Navegador de datos ElasticSearch
Búsqueda, gráficos, configuración con un solo clic ....