Elastic 7.13.0: Actualizaciones de los clientes oficiales Elasticsearch y Enterprise Search
Publicado el 26 de mayo de 2021El martes pasado se publicó la versión 7.13.0 de Elastic: Las mejoras clave incluyen búsqueda con buena relación costo-efectividad en más datos a través de snapshots buscables y el nivel congelado, mejoras de datos impulsados por analistas sobre la marcha con campos de tiempo de ejecución y más integraciones con Microsoft (muchos más detalles en el enlace). Como en cada nueva versión del Stack, esto significó también que en mi equipo publicamos los clientes oficiales para Elasticsearch y Elastic Enterprise Search.
Clientes Elasticsearch
Tenemos clientes oficiales para Elasticsearch en Ruby, Python, PHP, Perl, JavaScript, .NET, Rust, Go y Java. Soportamos todas las APIs de Elasticsearch y tenemos todo un sistema de testeo contra la especificación lo que nos asegura compatibilidad completa. La mayoría de los clientes ya están disponibles en la versión 7.13.0 en sus respectivos sistemas de dependencias e instalación de paquetes. Pueden leer más sobre los clientes en este enlace.
Clientes Enterprise Search
El proyecto de Elastic Enterprise Search empezó con los clientes Ruby y Python, y de a poco se irán sumando más lenguajes. Una de las novedades de la versión 7.13.0 es que se publica la primera versión estable del cliente Elastic Enterprise Search para PHP. Ha sido genial trabajar en equipo con mis compañeros del equipo de Clientes y el equipo Enterprise Search. La suerte que tuve de terminar en este trabajo es algo que no doy por sentado. Tenemos un equipo políglota trabajando en código abierto en tecnologías interesantes y con gente que sabe muchísimo y es muy buena gente.
En cuanto a las novedades técnicas, hay varias cosas nuevas interesantes en la API 7.13.0 de Enterprise Search, particularmente en lo que respecta a Workplace Search:
Nuevos métodos de autenticación en Workplace Search
El sistema soporta autenticación Básica HTTP y autenticación a través de tokens Elasticsearch a partir de esta versión. La API también, así que el cliente lo soporta también. Todos los APIs de Workplace Search soportan ambos métodos de autenticación y tokens de administración de Workplace Search (la autenticación que se podían usar hasta ahora), pero todavía necesitamos pasar por el proceso de OAuth para Búsqueda y Analítica.
El código funciona así:
host = 'https://id.ent-search.europe-west2.gcp.elastic-cloud.com' basic_auth = { user: 'enterprise_search', password: 'changeme' } workplace_search_client = Elastic::EnterpriseSearch::WorkplaceSearch::Client.new( host: host, http_auth: basic_auth ) |
Y en el caso de tokens, en vez de un hash con usuario y contraseña, pasamos un String
con el token ya sea en la inicialización o seteándolo como propiedad.
Nuevas APIs
Particularmente interesantes las APIs que nos permiten gestionar fuentes de contenido “content sources”. Workplace Search funciona en base a fuentes de contenido que se unen en una misma experiencia de búsqueda, y ahora podemos integrar una fuente nueva desde nuestro código Ruby. Si tenemos las credenciales de autenticación básica HTTP, ya no necesitamos crear las fuentes de contenido desde la interfaz web:
document
: Obtener un documento por ID de una fuente de contenido específica.delete_all_documents
: Elimina todos los documentos de una fuente dada.content_source
: Obtiene una fuente de contenido por IDcreate_content_source
: Crea una fuente.delete_content_source
: Elimina una fuente por ID.list_content_sources
: Lista todas las fuentes.put_content_source
: Actualiza una fuente de contenidos.
Un ejemplo de código:
# Crear una fuente de contenido: client.create_content_source(name: 'picando-codigo') # Obtener una fuente de contenido por ID: content_source_id = client.create_content_source(name: 'libros').body['id'] client.content_source(content_source_id) # Eliminar una fuente de contenido por ID: client.delete_content_source(content_source_id) # Obtener una lista de todas las fuentes de contenido: client.list_content_sources # Actualizar una fuente de contenido: body = { name: new_name, schema: { title: 'text', body: 'text', url: 'text' }, display: { title_field: 'title', url_field: 'url', color: '#f00f00' }, is_searchable: true } client.put_content_source(id, body: body) |
La verdad ambos productos se están poniendo cada vez mejor, y hay mucha cosa nueva e interesante en el horizonte para futuras versiones!
Si tienen cualquier duda sobre el cliente para Elasticsearch o Elastic Enterprise Search, estoy a las órdenes para intentar ayudar 🙂
No hay comentarios en este post
Feed de comentariosDejar un comentario
<pre lang="L"> código </pre>
Siendo L un lenguaje compatible GeSHI. Más info.