{"id":12417,"date":"2021-11-08T12:38:53","date_gmt":"2021-11-08T20:38:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12417"},"modified":"2025-06-13T21:25:11","modified_gmt":"2025-06-14T04:25:11","slug":"ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/","title":{"rendered":"ML se une a NoSQL: Integraci\u00f3n de funciones definidas por el usuario de Python con SQL++ para an\u00e1lisis"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Tras conversaciones con nuestros clientes sobre el retraso en la obtenci\u00f3n de informaci\u00f3n anal\u00edtica de sus modelos de aprendizaje autom\u00e1tico basados en Python, nos propusimos crear un canal sin fisuras de Python a Couchbase Analytics que devolviera informaci\u00f3n m\u00e1s r\u00e1pida en tiempo real.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Introducci\u00f3n<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Con la publicaci\u00f3n de <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/server\/whats-new\/\"><span style=\"font-weight: 400\">Servidor Couchbase 7.0<\/span><\/a><span style=\"font-weight: 400\">nos complace presentar una nueva funci\u00f3n que puede explorar en <\/span><b>Modo de vista previa para desarrolladores<\/b><span style=\"font-weight: 400\">Integraci\u00f3n de Python UDFs con Couchbase Analytics.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">El aprendizaje autom\u00e1tico ha transformado radicalmente la forma en que las organizaciones comprenden las necesidades de sus clientes. Los \u00e1mbitos del an\u00e1lisis avanzado, como el an\u00e1lisis predictivo (p\u00e9rdida de clientes, sentimiento de los clientes, etc.) y el modelado financiero, dependen cada vez m\u00e1s del procesamiento de datos a escala, casi en tiempo real, y de la extracci\u00f3n de informaci\u00f3n valiosa a partir de ellos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Este blog recorrer\u00e1 el proceso de configuraci\u00f3n de las instancias de Couchbase, la sincronizaci\u00f3n con el repositorio remoto de AnalyticsML, la creaci\u00f3n de los directorios necesarios y la ejecuci\u00f3n de los ejemplos de c\u00f3digo necesarios.<\/span><\/p>\n<p><span style=\"font-weight: 400\">El p\u00fablico objetivo de este blog es cualquier persona casualmente interesada en la intersecci\u00f3n de Couchbase Server, Machine Learning, Python, y el servicio Couchbase Analytics. Hay ciertos conceptos presentados que esperamos que el lector entienda (pero no te preocupes, incluiremos enlaces para ponerte al d\u00eda). En general, queremos que cualquiera que tenga el m\u00e1s m\u00ednimo inter\u00e9s recorra este tutorial para ver c\u00f3mo se puede enfocar el poder del ML en datos residentes en Couchbase usando sus algoritmos de ML para obtener insights instant\u00e1neos.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Requisitos previos y supuestos:<\/span><\/h3>\n<h4><span style=\"font-weight: 400\">Conocimientos\/comprensi\u00f3n:<\/span><\/h4>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Servidor Couchbase: <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/architecture-overview.html\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/server\/current\/learn\/architecture-overview.html<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Instalaci\u00f3n de Couchbase Server en Docker: <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html#multi-node-cluster-one-host\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html#multi-node-cluster-one-host<\/span><\/a><span style=\"font-weight: 400\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Couchbase Analytics: <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/introduction.html\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/server\/current\/analytics\/introduction.html<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">An\u00e1lisis de sentimientos con Sci-kit Learn: <\/span><a href=\"https:\/\/scikit-learn.org\/stable\/tutorial\/basic\/tutorial.html\"><span style=\"font-weight: 400\">https:\/\/scikit-learn.org\/stable\/tutorial\/basic\/tutorial.html<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400\">Configuraci\u00f3n del entorno:<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Adem\u00e1s, para poder seguir los siguientes pasos, necesitar\u00e1s una implementaci\u00f3n de Couchbase en funcionamiento:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Un IDE de Python v3.8+ (yo usar\u00e9 VSCode para este blog).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Docker Desktop instalado en su ordenador<\/span><\/li>\n<li style=\"font-weight: 400\">\n<pre class=\"\">The code samples will be formatted to indicate what should be included in your sample<\/pre>\n<\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Las muestras de la l\u00ednea de comandos tendr\u00e1n el formato <\/span><\/i><i><span style=\"font-weight: 400\">cursiva<\/span><\/i><i><span style=\"font-weight: 400\"> para indicar lo que debe introducirse<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">En los ejemplos de Python se identifican todas las bibliotecas necesarias (sklearn es de scikit-learn). Si no dispone de estas bibliotecas, inst\u00e1lelas con '<\/span><i><span style=\"font-weight: 400\">pip3 install<\/span><\/i><span style=\"font-weight: 400\">'<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los dos conjuntos de datos utilizados para este blog pueden encontrarse en kaggle en (<\/span><a href=\"https:\/\/www.kaggle.com\/stefanoleone992\/rotten-tomatoes-movies-and-critic-reviews-dataset\"><span style=\"font-weight: 400\">https:\/\/www.kaggle.com\/stefanoleone992\/rotten-tomatoes-movies-and-critic-reviews-dataset<\/span><\/a><span style=\"font-weight: 400\">). Se trata de archivos bastante grandes, por lo que se proporciona un enlace a los mismos para que pueda descargarlos cuando siga el curso.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400\">Configuraci\u00f3n de su servidor Couchbase:<\/span><\/h4>\n<p><span style=\"font-weight: 400\">En esta secci\u00f3n, instalar\u00e1 y configurar\u00e1 su Couchbase Server.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Desde la l\u00ednea de comandos de su terminal, cree los nodos ('cb-analytics' &amp; 'cb'):<\/span>\n<ol>\n<li style=\"font-weight: 400\">\n<pre class=\"\">docker run -d --name cb-analytics couchbase:7.0.2<\/pre>\n<\/li>\n<li style=\"font-weight: 400\">\n<pre class=\"\">docker run -d --name cb -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Para confirmar que la instancia se ha lanzado correctamente:<\/span>\n<ol>\n<li><span style=\"font-weight: 400\">docker logs db1<\/span><\/li>\n<li><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Si el contenedor se ha iniciado, la salida deber\u00eda comenzar con lo siguiente:<\/span>\n<ol>\n<li>\n<pre>Starting Couchbase Server -- Web UI available at https:\/\/:8091<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Descubre las direcciones IP locales de cb y cb-analytics:<\/span>\n<ol>\n<li style=\"font-weight: 400\">\n<pre>docker inspect --format '{{ .NetworkSettings.IPAddress }}' cb<\/pre>\n<\/li>\n<li style=\"font-weight: 400\">\n<pre>docker inspect --format '{{ .NetworkSettings.IPAddress }}' cb-analytics<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12418 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/pythonudf-1024x175.png\" alt=\"\" width=\"900\" height=\"154\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-1024x175.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-300x51.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-768x131.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-1536x262.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf-1320x225.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/pythonudf.png 1600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">5. Ir a <\/span><i><span style=\"font-weight: 400\">https:\/\/ localhost:8091<\/span><\/i><span style=\"font-weight: 400\"> para iniciar la configuraci\u00f3n de su instancia couchbase y seleccione '<\/span><i><span style=\"font-weight: 400\">Configurar un nuevo cl\u00faster<\/span><\/i><span style=\"font-weight: 400\">r' y contin\u00fae con el Asistente de Configuraci\u00f3n de forma normal:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12419 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/server-1024x684.png\" alt=\"\" width=\"900\" height=\"601\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-1024x684.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-300x200.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-768x513.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-400x267.png 400w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-450x300.png 450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/server.png 1060w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<ol>\n<li style=\"list-style-type: none\"><\/li>\n<\/ol>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los nombres de los servidores Couchbase son <\/span><b>'cb<\/b><span style=\"font-weight: 400\">y<\/span><b>cb-analytics<\/b><span style=\"font-weight: 400\">' con nombre de usuario <em>'<\/em><\/span><em><span style=\"font-weight: 400\">Administrador<\/span><\/em><span style=\"font-weight: 400\"><em>'<\/em> y contrase\u00f1a '<\/span><em><span style=\"font-weight: 400\">contrase\u00f1a<\/span><\/em><span style=\"font-weight: 400\">'<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Una vez inicializado el cluster en el primer nodo Couchbase Server (cb), el siguiente paso es a\u00f1adir los nodos Couchbase Server de cb-analytics al cluster.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">En la Consola Web de Couchbase, ve a la pesta\u00f1a Servidores y haz clic en A\u00d1ADIR SERVIDOR. Esto abre el di\u00e1logo 'A\u00f1adir Nodo Servidor'.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12420 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/servernode-776x1024.png\" alt=\"\" width=\"776\" height=\"1024\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode-776x1024.png 776w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode-227x300.png 227w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode-768x1013.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode-300x396.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode-15x20.png 15w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/servernode.png 1060w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">En el campo Nombre de host\/Direcci\u00f3n IP, introduzca la direcci\u00f3n IP que captur\u00f3 previamente para cb. Haga clic en A\u00f1adir servidor para a\u00f1adir el nodo a la configuraci\u00f3n del cl\u00faster.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Una vez que cb y cb-analytics se hayan a\u00f1adido correctamente a la configuraci\u00f3n del cl\u00faster, haga clic en Reequilibrar para que los nuevos nodos se activen en el cl\u00faster.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cree dos buckets, uno para 'movies' y otro para 'movie_reviews':<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12421 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/databucket.png\" alt=\"\" width=\"531\" height=\"438\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket.png 531w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket-300x247.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket-20x16.png 20w\" sizes=\"auto, (max-width: 531px) 100vw, 531px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12422 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/databucket2.png\" alt=\"\" width=\"530\" height=\"436\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket2.png 530w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket2-300x247.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/databucket2-20x16.png 20w\" sizes=\"auto, (max-width: 530px) 100vw, 530px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Ahora tienes un cluster multi-nodos de Couchbase ejecut\u00e1ndose en contenedores en un \u00fanico host. Tus dos buckets y tu instancia de Couchbase est\u00e1n listos para funcionar (si necesitas m\u00e1s detalles, aqu\u00ed tienes el enlace a la gu\u00eda <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html#multi-node-cluster-one-host\"><span style=\"font-weight: 400\">pasos m\u00e1s detallados<\/span><\/a><span style=\"font-weight: 400\">).\u00a0<\/span><\/li>\n<\/ul>\n<p><b>ADVERTENCIA: EL SERVIDOR COUCHBASE DEBE ESTAR EN MODO DE VISTA PREVIA PARA DESARROLLADORES. PONER EL SERVIDOR COUCHBASE EN ESTE MODO ES UN CAMBIO NO RECUPERABLE Y SE RECOMIENDA ENCARECIDAMENTE NO REALIZAR ESTE CAMBIO EN UN ENTORNO DE PRODUCCI\u00d3N O EN UN SISTEMA CR\u00cdTICO.\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400\">Para configurar Couchbase Server en modo Developer Preview es necesario ejecutar lo siguiente en una l\u00ednea de comandos.<\/span><\/p>\n<pre>\/opt\/couchbase\/bin\/couchbase-cli enable-developer-preview -c localhost:8091 -u Administrator \\ -p password --enable<\/pre>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12423 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/password-enable-1024x122.png\" alt=\"\" width=\"900\" height=\"107\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-1024x122.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-300x36.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-768x91.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-1536x182.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-20x2.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable-1320x157.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/password-enable.png 1600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/h4>\n<p><span style=\"font-weight: 400\">Configuraci\u00f3n del sistema de archivos:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los archivos de este ejercicio y del conjunto de datos de entrenamiento se encuentran en el archivo <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/AnalyticsML\"><span style=\"font-weight: 400\">repositorio github<\/span><\/a><span style=\"font-weight: 400\">\u00a0<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12424 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/githubrepo-1024x159.png\" alt=\"\" width=\"900\" height=\"140\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-1024x159.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-300x47.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-768x120.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-1536x239.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo-1320x205.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/githubrepo.png 1600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Tendr\u00e1 que crear una carpeta para trabajar dentro de mantener su contenido separado de sus otras actividades (es decir, ejemplos \/ AnalyticsML) y dentro de esa carpeta tendr\u00e1 que crear otra carpeta llamada '<\/span><i><span style=\"font-weight: 400\">tuber\u00eda<\/span><\/i><span style=\"font-weight: 400\">'.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12425 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/github.png\" alt=\"\" width=\"687\" height=\"156\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/github.png 687w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/github-300x68.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/github-20x5.png 20w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><\/p>\n<p>S\u00f3lo tienes que configurar el entorno necesario de Couchbase Server en Docker. En la Parte 2, configuraremos los ejemplos de c\u00f3digo necesarios, importaremos la funci\u00f3n y finalmente ejecutaremos la funci\u00f3n de an\u00e1lisis de sentimiento desde Couchbase Analytics.<\/p>\n<p><span style=\"font-weight: 400\">\u00bfQuieres saber m\u00e1s sobre Couchbase Analytics? Vea la sesi\u00f3n completa de ConnectONLINE aqu\u00ed:<\/span><\/p>\n<p><iframe loading=\"lazy\" title=\"El aprendizaje autom\u00e1tico se une a NoSQL: Python UDFs - CBConnect21\" width=\"900\" height=\"506\" src=\"https:\/\/www.youtube.com\/embed\/nyHUKfTMKDQ?feature=oembed&#038;enablejsapi=1&#038;origin=https:\/\/www.couchbase.com\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<p><b data-stringify-type=\"bold\">Agradecimientos<\/b><br \/>\nGracias a\u00a0<b data-stringify-type=\"bold\">Anuj Kothari,\u00a0<\/b>un becario de verano de gesti\u00f3n de productos para el servicio Couchbase Analytics, cuyos esfuerzos iniciales hicieron que esto empezara y despegara el verano pasado. Gracias a\u00a0<b data-stringify-type=\"bold\">Idris Motiwala<\/b>Director de producto principal del servicio de an\u00e1lisis de Couchbase, y\u00a0<b data-stringify-type=\"bold\">Ian Maxon<\/b>ingeniero de software de Couchbase Analytics Service, por su trabajo editorial para hacer de \u00e9ste un blog m\u00e1s funcional.<\/p>","protected":false},"excerpt":{"rendered":"<p>After conversations with our customers about the delay in obtaining analytical insights from their Python-based machine learning models, we set out to create a seamless pipeline from Python to Couchbase Analytics that returns faster insights in real time.\u00a0 Introduction With [&hellip;]<\/p>\n","protected":false},"author":79257,"featured_media":12429,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2294,1816,9139,1812],"tags":[8907,1519,2140,1725],"ppma_author":[9482,9483],"class_list":["post-12417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","category-couchbase-server","category-python","category-n1ql-query","tag-couchbase-server-7-0","tag-docker","tag-machine-learning","tag-nosql-database"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn about a new feature that you can explore in Developer Preview mode: integration of Python UDFs with Couchbase Analytics\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics\" \/>\n<meta property=\"og:description\" content=\"Learn about a new feature that you can explore in Developer Preview mode: integration of Python UDFs with Couchbase Analytics\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-08T20:38:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:25:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Muk Sreenivasan, Anuj Kothari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Muk Sreenivasan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/\"},\"author\":{\"name\":\"Muk Sreenivasan\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b37fc76b5459210102cef15674423031\"},\"headline\":\"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics\",\"datePublished\":\"2021-11-08T20:38:53+00:00\",\"dateModified\":\"2025-06-14T04:25:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/\"},\"wordCount\":890,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/11\\\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg\",\"keywords\":[\"Couchbase Server 7.0\",\"docker\",\"Machine Learning (ML)\",\"NoSQL Database\"],\"articleSection\":[\"Couchbase Analytics\",\"Couchbase Server\",\"Python\",\"SQL++ \\\/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/\",\"name\":\"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/11\\\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg\",\"datePublished\":\"2021-11-08T20:38:53+00:00\",\"dateModified\":\"2025-06-14T04:25:11+00:00\",\"description\":\"Learn about a new feature that you can explore in Developer Preview mode: integration of Python UDFs with Couchbase Analytics\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/11\\\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/11\\\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b37fc76b5459210102cef15674423031\",\"name\":\"Muk Sreenivasan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/03\\\/muk_sreenivasan.png194f54236bbc53ba3b1b5550c654d008\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/03\\\/muk_sreenivasan.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/03\\\/muk_sreenivasan.png\",\"caption\":\"Muk Sreenivasan\"},\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/muk-sreenivasan\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics - The Couchbase Blog","description":"Conoce una nueva caracter\u00edstica que puedes explorar en modo Developer Preview: integraci\u00f3n de Python UDFs con Couchbase Analytics.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/","og_locale":"es_MX","og_type":"article","og_title":"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics","og_description":"Learn about a new feature that you can explore in Developer Preview mode: integration of Python UDFs with Couchbase Analytics","og_url":"https:\/\/www.couchbase.com\/blog\/es\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-11-08T20:38:53+00:00","article_modified_time":"2025-06-14T04:25:11+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg","type":"image\/jpeg"}],"author":"Muk Sreenivasan, Anuj Kothari","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Muk Sreenivasan","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/"},"author":{"name":"Muk Sreenivasan","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b37fc76b5459210102cef15674423031"},"headline":"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics","datePublished":"2021-11-08T20:38:53+00:00","dateModified":"2025-06-14T04:25:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/"},"wordCount":890,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg","keywords":["Couchbase Server 7.0","docker","Machine Learning (ML)","NoSQL Database"],"articleSection":["Couchbase Analytics","Couchbase Server","Python","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/","url":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/","name":"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg","datePublished":"2021-11-08T20:38:53+00:00","dateModified":"2025-06-14T04:25:11+00:00","description":"Conoce una nueva caracter\u00edstica que puedes explorar en modo Developer Preview: integraci\u00f3n de Python UDFs con Couchbase Analytics.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/luca-bravo-XJXWbfSo2f0-unsplash-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/ml-meets-nosql-integrating-python-user-defined-functions-with-n1ql-for-analytics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ML Meets NoSQL: Integrating Python User-Defined Functions with SQL++ for Analytics"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b37fc76b5459210102cef15674423031","name":"Muk Sreenivasan","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/muk_sreenivasan.png194f54236bbc53ba3b1b5550c654d008","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/muk_sreenivasan.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/muk_sreenivasan.png","caption":"Muk Sreenivasan"},"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/muk-sreenivasan\/"}]}},"acf":[],"authors":[{"term_id":9482,"user_id":79257,"is_guest":0,"slug":"muk-sreenivasan","display_name":"Muk Sreenivasan","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/muk_sreenivasan.png","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/muk_sreenivasan.png"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":9483,"user_id":0,"is_guest":1,"slug":"anuj-kothari","display_name":"Anuj Kothari","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-08-at-12.21.36-PM.png","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-08-at-12.21.36-PM.png"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/79257"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12417"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12417\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/12429"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12417"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}