Archivos de la categoría Uncategorized

autocomplete

Crear su propio motor de búsqueda con elasticsearch

En este artículo enseñamos cómo crear un motor de búsqueda rápido capaz de búsqueda de texto profundo, trabajando con terabytes de datos utilizando elasticsearch.

Vamos a construir un motor de búsqueda basado en la categoría de wikipedia “living persons”, almacenar los datos en elasticsearch, probar la velocidad y la relevancia de nuestras consultas y también crear una consulta de autocompletado.

Requisitos previos

Ya tienes elasticsearch y kibana instalado.

Instalar Pywikibot

Pywikibot permite descargar el contenido de artículos de wikipedia.  Si tienes acceso a otra fuente de datos,  puede utilizarlo en su lugar.

Instrucciones para instalar el pywikibot están aqui : https://www.mediawiki.org/wiki/Manual:Pywikibot

Configurar pywikibot para usar  wikipedia.

Esto se hace ejecutando el script de configuración de pywikibot

Python pwb.py generate_user_files

El script es interactivo y permite definir el tipo de wiki que quieras.  En nuestro caso, elegimos wikipedia.

Instalar bibliotecas de Python
PIP instalar elasticsearch
Crear un mapping en Elasticsearch

El mapping define qué tipo de datos se guardan en cada campo, y cómo debe ser indexada.

El siguiente comando se puede pegar directamente en la consola Kibana Dev Tools

Esto crea una asignación de tipo de documento “wiki_page” en el índice “wikipeople” con cuatro categorías de texto ( url, título, categorías, texto) y un campo especial llamado “suggestion” que se utilizará para la función de autocompletar (explicamos más adelante).  Tenga en cuenta también que hemos especificado que el campo de texto utiliza un analizador de lengua inglesa.   (en lugar de francés, español o cualquier otro idioma).

Crear script  Pywikibot

En el directorio donde se instaló Pywikibot, encontrará un subdirectorio “/ pywikibot/core/scripts”

En el directorio de scripts se debe crear un nuevo script llamado wikipeopleloader.py

Se puede ejecutar el script utilizando la instrucció siguiente  (desde directorio/pywikibot/core)

Python pwb.py wikipeopleloader.py

La salida de la pantalla indicará  si hay algun error.  Si todo va bien, veremos cómo el script descarga las páginas de wikipedia y los carga en la base de datos de elasticsearch.   La velocidad de descarga depende de tu conexión a internet-  en mi caso una o dos páginas por segundo.  Para realizar las pruebas puedes abortar el proceso (ctrl Z) después de 60 segundos.

Ejemplo de consulta Elasticsearch para motor de búsqueda

A continuación encontrará una consulta y parte de su respuesta.

La parte de “source” de la consulta especifica que datos queremos excluir de la respuesta para reducir su tamaño.

La consulta busca “american football bearcats” en el título, categoría y cuerpo del texto.  Sin embargo da mayor peso a la valoración (score) si estos términos se encuentran en el campo  “categoría” o “título” (según lo determinado por los valores de “boost” en la consulta).

La consulta “highlight” devuelve el detalle de donde se ha encontrado el término de búsqueda.   Esto se puede ver en la respuesta con la etiqueta “highlight”.  De esta manera es fácil mostrar el contexto del término de búsqueda al usuario para que pueda valorar si le interesa los resultados.

Sugerencias de autocompletar usando ElasticSearch y Jquery

En nuestro  mapping creamos un campo especial llamado “suggest” basado en el título de la página.  Esto nos permite mostrar una propuesta de  “Autocompletar” a la medida que el usuario vaya introduciendo el texto.   Consultas de tipo autocompletar estan optimizadas para esta finalidad.    Se ve un ejemplo de esta consulta a continuación:

En nuestro caso, la consulta devuelve sugerencias cuando el título de la página comienza con las letras que hemos introducido en nuestra consulta.    Esto nos permitiría crear la funcionalidad autocompletar en una página web  con jquery o similar.

bigdata

Analizar Big Data de IoT con open source. MQTT y ElasticSearch – Tutorial

¿Por qué ElasticSearch?

  • open source
  • altamente escalable
  • Ideal para datos que varian durante el tiempo

Forma parte del  elasticsearch stack que puede proporcionar las funcionalidades siguientes:

  • Gráficos (Kibana)
  • Analytics (Kibana)
  • Alarmas (Logstash)

Lo que explicamos en este artículo

Vamos a configurar un nodo único elasticsearch en un servidor Linux Ubuntu 16.04 y lo vamos a usar para recopilar datos publicados en un servidor de MQTT Mosquitto.  (Se supone que ya tienes tu servidor MQTT instalado).

Instalar ElasticSearch

Crear un nuevo directorio  myElasticSearch

mkdir myElasticSearch
cd myElasticSearch

Download el tar Elasticsearch:

curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.1/elasticsearch-2.4.1.tar.gz

A continuación extraerlo como sigue:

tar -xvf elasticsearch-2.4.1.tar.gz

Luego creará un montón de archivos y carpetas en el directorio actual. Luego entramos en el directorio bin :

CD elasticsearch-2.4.1/bin

Y ahora estamos listos para comenzar nuestro nodo :

. / elasticsearch

Para almacenar los datos podemos utilizar el comando

curl -XPOST 'localhost:9200/customer/external?pretty' -d '
{
"name": "Jane Doe"
}'

Para leer los mismos datos , podemos utilizar

curl -XGET 'localhost:9200/customer/external/1?pretty'

Si ves los datos que creó, entonces elasticSearch ya está en marcha!

Instalar al cliente de Python para elasticsearch

Instalar al cliente de mqtt de PAHO y elasticsearch en el servidor

pip install elasticsearch
pip install paho-mqtt

Crear un script de cliente Python MQTT para incorporar los datos publicados en MQTT en elasticSearch

Use el script mqttToElasticSearch.py que utiliza los libraries MQTT PAHO y ElasticSearch  de python.  Tendrás que modificar las líneas en la parte superior dependiendo del puerto y dirección IP de la instalación de MQTT.

Se puede descargar el fichero desde

https://github.com/mattfield11/MQTT-elasticSearch

O si tienes GIT instalado:

git clone https://github.com/mattfield11/mqtt-elasticSearch.git

El script debería ser instalado en un directorio en el mismo servidor que tengas ElasticSearch funcionando.

Editar el script mqttToElasticSearch para incluir la dirección de tu servidor MQTT y el puerto.

Ejecutar al cliente de Python MQTT que acaba de descargar

Python mqttToElasticSearch.py

Para ver los datos que acabamos de crear en elasticsearch

curl 'localhost:9200/my-index/_search?q=*&pretty'

¡Ahora los datos publicados en MQTT se guardan  en elasticsearch ( en función de los topicos que tenemos configurado en el fichero)!
En los próximos días explicamos cómo ver datos MQTT en Kibana donde se puede hacer gráficos y análisis de los datos MQTT.

Para obtener más información

ElasticSearch

https://www.elastic.co/

https://www.elastic.co/Guide/en/elasticsearch/Reference/Current/Setup-Service.html#Using-systemd

Python ElasticSearch cliente

https://www.elastic.co/Guide/en/elasticsearch/Client/Python-API/Current/index.html

Seguimiento y medición de campañas de marketing

definemeasureact

Todo seguidor de la doctrina “lean manufacturing” sabe  que la medición es un paso fundamental para la mejora continua.    En marketing esto significa medir el número de usuarios que abren nuestros mails o que hagan clic en nuestros enlaces, para determinar si nuestros mensajes llegan o no a los clientes.    Esto puede lograrse fácilmente utilizando herramientas de software de mailing combinada con herramientas de seguimiento como google analytics.   Mail chimp   por ejemplo puede utilizarse con poco o ningún coste y nos permite optimizar y realizar un seguimiento importante de la efectividad de nuestra comunicación de correo electrónico con clientes.   Esta herramienta nos permite controlar la efectividad de nuestros mensajes en atraer a los clientes a nuestro web, o incluso evaluar el % de clientes que llegan a comprar determinados productos en nuestra tienda on-line.   Smart factory ofrece un taller de marketing digital para acelerar el proceso de creación de un servicio de e-marketing e analisis integrado con su sitio web.

Guardar

Guardar

Save

Save