{"id":11930,"date":"2021-09-20T00:00:19","date_gmt":"2021-09-20T07:00:19","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11930"},"modified":"2025-06-13T21:22:55","modified_gmt":"2025-06-14T04:22:55","slug":"how-to-full-text-search-javascript-app","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/how-to-full-text-search-javascript-app\/","title":{"rendered":"C\u00f3mo a\u00f1adir la funci\u00f3n de b\u00fasqueda de texto completo a su aplicaci\u00f3n JavaScript"},"content":{"rendered":"<p><strong>Es inevitable:<\/strong> Si est\u00e1s trabajando con una base de datos de documentos, eventualmente vas a necesitar buscar (y a trav\u00e9s de) tus documentos JSON.<\/p>\n<p>En este tutorial, a\u00f1adir\u00e1s las capacidades de b\u00fasqueda de texto completo de Couchbase a la API REST b\u00e1sica construida con Express que hemos estado construyendo a lo largo de esta serie de Node.js.<\/p>\n<p>La entrada anterior de esta serie <a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">utiliz\u00f3 Express para construir una API b\u00e1sica para crear consultas N1QL<\/a>.<\/p>\n<p>El post de hoy te lleva un paso m\u00e1s all\u00e1. Aprender\u00e1s a encontrar documentos JSON que contengan el texto que buscas a\u00f1adiendo una funcionalidad a tu aplicaci\u00f3n que utilice el m\u00e9todo <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> Buscar API. Empecemos.<\/p>\n<h2>\u00bfQu\u00e9 es la b\u00fasqueda de texto completo?<\/h2>\n<p>B\u00fasqueda de texto completo (FTS) es un nombre extra\u00f1o, pero es un concepto bien desarrollado en \u00e1reas acad\u00e9micas centradas en el an\u00e1lisis de grandes piezas de contenido de texto. En el \u00e1mbito de las bases de datos, lo llamamos simplemente \"b\u00fasqueda\" para abreviar, y se centra en encontrar texto dentro de documentos JSON.<\/p>\n<p>Los desarrolladores de aplicaciones utilizan herramientas relacionadas con la b\u00fasqueda para encontrar coincidencias sin tener que escribir consultas SQL que normalmente requieren saber c\u00f3mo\/d\u00f3nde encontrar los datos de inter\u00e9s. En un escenario de b\u00fasqueda de texto completo se busca texto con m\u00e1s sofisticaci\u00f3n.<\/p>\n<p>Por ejemplo, los sistemas de b\u00fasqueda comprenden las palabras ra\u00edz mediante un concepto conocido como stemming, por lo que no es necesario buscar manualmente muchas permutaciones de un t\u00e9rmino. Del mismo modo, los comodines, prefijos y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/fuzzy-matching\/?ref=blog\" target=\"_blank\" rel=\"noopener\">emparejamiento difuso<\/a> son posibles con sistemas de b\u00fasqueda robustos.<\/p>\n<h2>Creaci\u00f3n de \u00edndices de b\u00fasqueda<\/h2>\n<p>La utilizaci\u00f3n de un sistema de b\u00fasqueda consta de dos pasos: (1) indexar\/analizar el texto de cada documento y (2) solicitar una lista de documentos que contengan coincidencias basadas en el texto.<\/p>\n<p><em>La fase de indexaci\u00f3n<\/em> es similar a la creaci\u00f3n de \u00edndices secundarios para datos relacionales\/tabulares, en la que se describen los campos o elementos que se van a indexar y el sistema los rastrea por ti. Tambi\u00e9n puedes pedirle al sistema que indexe todos los campos de texto del documento, aunque para grandes conjuntos de datos esto puede no ser eficiente en producci\u00f3n.<\/p>\n<p><em>La fase de consulta<\/em> (es decir, la b\u00fasqueda) env\u00eda un texto al servidor para que \u00e9ste lo busque. El sistema compara ese texto con los \u00edndices y devuelve una lista de documentos con coincidencias.<\/p>\n<p>La b\u00fasqueda de texto completo es sencilla, pero hay un conjunto infinito de opciones y preguntas a tener en cuenta, como:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>C\u00f3mo manejar frases y n\u00fameros<\/li>\n<li>Identificar en qu\u00e9 parte de un documento se encuentra un texto determinado<\/li>\n<li>An\u00e1lisis de textos en varios idiomas<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>En realidad, este es un tema que merece ser tratado en profundidad. Los patrones simples utilizados en este post se pueden ampliar a todos los diferentes escenarios de b\u00fasqueda como se describe en <a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-introduction.html?ref=blog\" target=\"_blank\" rel=\"noopener\">esta introducci\u00f3n a la b\u00fasqueda de texto completo<\/a>.<\/p>\n<h2>Preparaci\u00f3n de su instancia de Couchbase<\/h2>\n<p>If you are new to this series of JavaScript coding tutorials, you need to install the `travel-sample` data Bucket, as described in the <a href=\"https:\/\/developer.couchbase.com\/new-to-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Documentaci\u00f3n de Couchbase<\/a>.<\/p>\n<p>El script utilizado en el post anterior de esta serie tambi\u00e9n se va a utilizar como punto de partida para el post de hoy. El c\u00f3digo Node.js est\u00e1 incluido en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">el final de ese post<\/a>.<\/p>\n<p>A medida que avanzas en estos tutoriales de Node.js vas construyendo una aplicaci\u00f3n REST API m\u00e1s compleja y \u00fatil. Vamos a sumergirnos en la creaci\u00f3n del \u00edndice de b\u00fasqueda necesario para apoyar el siguiente paso de tu proyecto.<\/p>\n<h2>Crear un \u00edndice de b\u00fasqueda de texto b\u00e1sico<\/h2>\n<p>To create a search index, you select the `Search` tab in the <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-ui\/manage-ui.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Consola web de Couchbase<\/a> and press the `Add Index` button.<\/p>\n<p>Then enter the name you want to give the index and choose which Bucket to analyze (`travel-sample`). Finish by pressing the `Create Index` button to submit your choices. There are many different options to choose from, but in today&#8217;s example, we keep all the defaults for simplicity sake. The following animation shows each of these steps:<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/09\/create-full-text-search-index-in-couchbase.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11931\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/09\/create-full-text-search-index-in-couchbase-1024x576.gif\" alt=\"Process to create a search index using Couchbase Web Console\" width=\"900\" height=\"506\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/create-full-text-search-index-in-couchbase-1024x576.gif 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/create-full-text-search-index-in-couchbase-300x169.gif 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/create-full-text-search-index-in-couchbase-768x432.gif 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/create-full-text-search-index-in-couchbase-20x11.gif 20w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Despu\u00e9s de completar estos pasos, deber\u00eda ver sus \u00edndices de b\u00fasqueda y su estado en la Consola Web. Tambi\u00e9n deber\u00eda poder ver cu\u00e1ntos documentos se han procesado.<\/p>\n<p>Indexing on the `travel-sample` data Bucket takes a few minutes, but once it&#8217;s complete, you can do a sample search request through the basic web user interface as shown below.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/09\/test-query-full-text-search-index-in-couchbase.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11932\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/09\/test-query-full-text-search-index-in-couchbase.gif\" alt=\"Entering a full-text search query on an index in the Couchbase Web Console\" width=\"540\" height=\"304\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Introduzca un t\u00e9rmino sencillo en el cuadro de b\u00fasqueda y aparecer\u00e1 una lista con los ID de los documentos coincidentes, con las coincidencias m\u00e1s destacadas en la parte superior. La Consola Web permite hacer clic f\u00e1cilmente en estos ID para ver el texto completo del documento.<\/p>\n<h2>Creaci\u00f3n de una funci\u00f3n de b\u00fasqueda de texto simple<\/h2>\n<p>There are many additional options for fine-tuning your searches with boolean operations, fuzzy matching, and more. The Web Console only does a simple `query string` search and this is the same type you will implement in your code.<\/p>\n<p>Para crear la nueva funci\u00f3n de b\u00fasqueda de texto completo es necesario:<\/p>\n<ol>\n<li>Proporcione una cadena para buscar (por ejemplo, \"grand\").<\/li>\n<li>Specify the search index to use: `travelsearch`.<\/li>\n<li>Declare the query type to use: `queryString`.<\/li>\n<li>Ensamble todas las piezas y env\u00edelas al servidor.<\/li>\n<li>Recibir los resultados y mostrarlos al usuario\/aplicaci\u00f3n.<\/li>\n<\/ol>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Estas cinco l\u00edneas de c\u00f3digo JavaScript que aparecen a continuaci\u00f3n son un ejemplo de c\u00f3mo establecer estas variables, agruparlas, pasarlas al cl\u00faster e imprimir los resultados en la consola:<\/p>\n<pre class=\"toolbar:1 nums-toggle:false wrap-toggle:false show-plain:1 lang:js decode:true\">    const querystr = \"grand\";\r\n    const searchIndex = 'travelsearch';\r\n    const stringQuery = couchbase.SearchQuery.queryString(querystr);\r\n    const searchResult = cluster.searchQuery(searchIndex, stringQuery);\r\n    console.log(searchResult);\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>If you want to adjust the type of search query, swap out `queryString` on the third line with another method. Code samples of different types are provided in the <a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/howtos\/full-text-searching-with-sdk.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Documentaci\u00f3n de Couchbase Full-Text Search<\/a>.<\/p>\n<p>Por ejemplo, una consulta de intervalo de fechas tiene el siguiente aspecto:<br \/>\n<code><br \/>\nconst dateQuery = couchbase.SearchQuery.dateRange().start(startDate).end(endDate)<br \/>\n<\/code><\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo completo de script independiente que incluye la l\u00f3gica b\u00e1sica. Lo incorporamos al ejemplo de API REST Express en la siguiente secci\u00f3n.<\/p>\n<pre class=\"toolbar:1 nums-toggle:false wrap-toggle:false show-plain:1 lang:js decode:true\">var couchbase = require(\"couchbase\");\r\n\r\nasync function main(){\r\n\r\nvar cluster = new couchbase.Cluster(\"couchbase:\/\/localhost\", {\r\n  username: \"Administrator\",\r\n  password: \"Administrator\"\r\n});\r\n\r\nvar bucket = cluster.bucket(\"travel-sample\");\r\nvar collection = bucket.defaultCollection();\r\n\r\n    const querystr = \"grand\";\r\n    const searchIndex = 'travelsearch';\r\n    const stringQuery = couchbase.SearchQuery.queryString(querystr);\r\n    const searchResult = await cluster.searchQuery(searchIndex, stringQuery);\r\n    console.log(searchResult);\r\n\r\n    if (searchResult.meta.status.failed == 0) {\r\n        searchResult.rows.forEach((row)=&gt;{\r\n          console.log(row);\r\n        });\r\n      }\r\n}\r\n\r\nmain();\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Profundizar en el C\u00f3digo<\/h2>\n<p>Siguiendo con nuestro ejemplo, ahora puedes a\u00f1adirlo al c\u00f3digo de la API REST que hemos creado en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">tutorial de la semana pasada<\/a>.<\/p>\n<p>Add the code along with the new Express routing so you can send a search request from a URL in the browser. In this case, the path will be: `\/search\/[search term]` \u2013 e.g., `\/search\/grand`.<\/p>\n<p>He aqu\u00ed la definici\u00f3n de la ruta para construir la consulta de b\u00fasqueda de texto completo:<\/p>\n<pre class=\"toolbar:1 nums-toggle:false wrap-toggle:false show-plain:1 lang:js decode:true\">  app.get('\/search\/:searchterm',\r\n    runAsync(async (req, res) =&gt; {\r\n      const querystr = req.params.searchterm;\r\n      const searchIndex = 'travelsearch';\r\n      const stringQuery = couchbase.SearchQuery.queryString(querystr);\r\n\r\n      const searchResult = await cluster.searchQuery(\r\n        searchIndex,\r\n        stringQuery,\r\n        \/\/ add options in their own object:\r\n        { timeout:2000, limit:5}\r\n        ).catch((e)=&gt;{console.log(e); throw e;});\r\n\r\n      if (searchResult.meta.status.failed == 0) {\r\n        res.json(searchResult);\r\n        searchResult.rows.forEach((row)=&gt;{\r\n          console.log(row);\r\n        })\r\n      }\r\n  }))\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Haga clic a continuaci\u00f3n para ver el c\u00f3digo completo de la API REST, incluidas las rutas de obtenci\u00f3n de documentos, consulta N1QL y b\u00fasqueda:<\/p>\n<pre class=\"toolbar:1 nums-toggle:false wrap-toggle:false show-plain:1 minimize:true lang:js decode:true\">var app = require('express')();\r\n\r\nvar couchbase = require(\"couchbase\");\r\n\r\nasync function main() {\r\n\r\n  app.get('\/get\/:docid',\r\n    runAsync(async (req, res) =&gt; {\r\n      var docid = req.params.docid;\r\n      var docjson = await getDoc(docid, function(err, result){\r\n        res.json(result.content)\r\n      });\r\n\r\n      res.json(docjson.content);\r\n  }));\r\n\r\n  app.get('\/query\/:cityname',\r\n    runAsync(async (req, res) =&gt; {\r\n      var cityname = req.params.cityname;\r\n\r\n      var querystr = `SELECT type, name, city FROM \\`travel-sample\\` WHERE city = $CITY;`\r\n      var params = { parameters: { CITY: cityname}}\r\n\r\n      await cluster.query(querystr, params, function(err, result){\r\n        res.json(result)\r\n      })\r\n  }));\r\n\r\n  app.get('\/search\/:searchterm',\r\n    runAsync(async (req, res) =&gt; {\r\n      const querystr = req.params.searchterm;\r\n      const searchIndex = 'travelsearch';\r\n      const stringQuery = couchbase.SearchQuery.queryString(querystr);\r\n\r\n      const searchResult = await cluster.searchQuery(\r\n        searchIndex,\r\n        stringQuery,\r\n        \/\/ add options in their own object:\r\n        {timeout:2000, limit:5}\r\n        ).catch((e)=&gt;{console.log(e); throw e;});\r\n\r\n      if (searchResult.meta.status.failed == 0) {\r\n        res.json(searchResult);\r\n        searchResult.rows.forEach((row)=&gt;{\r\n          console.log(row);\r\n        })\r\n      }\r\n  }))\r\n\r\n  app.listen(3000, () =&gt; console.log('Listening on port 3000'));\r\n\r\n  function runAsync (callback) {\r\n    return function (req, res, next) {\r\n      callback(req, res, next)\r\n      .catch(next)\r\n    }\r\n  }\r\n\r\n  var cluster = new couchbase.Cluster(\"couchbase:\/\/localhost\", {\r\n    username: \"Administrator\",\r\n    password: \"Administrator\"\r\n  });\r\n\r\n  var bucket = cluster.bucket(\"travel-sample\");\r\n  var collection = bucket.defaultCollection();\r\n\r\n  var getDoc = async (key) =&gt; {\r\n      var result = await collection.get(key);\r\n      console.log(result)\r\n      return result\r\n  }\r\n}\r\n\r\nmain();\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Ejecuci\u00f3n de la API REST de consulta de b\u00fasqueda<\/h2>\n<p>Access the application through the web browser on port 3000 and with the search path: `https:\/\/localhost:3000\/search\/grand`.<\/p>\n<p>Los resultados de la b\u00fasqueda se muestran aqu\u00ed e incluyen una lista de ID de documentos coincidentes y la puntuaci\u00f3n de clasificaci\u00f3n de la coincidencia:<\/p>\n<pre class=\"toolbar:1 nums-toggle:false wrap-toggle:false show-plain:1 lang:js decode:true\">{\"rows\":[{\"index\":\"travelsearch_1bf0c4c01d25b582_4c1c5584\",\"id\":\"landmark_21813\",\"score\":1.063667683545401,\"sort\":[\"_score\"]},\r\n{\"index\":\"travelsearch_1bf0c4c01d25b582_4c1c5584\",\"id\":\"airport_7057\",\"score\":1.016530994468649,\"sort\":[\"_score\"]},\r\n{\"index\":\"travelsearch_1bf0c4c01d25b582_4c1c5584\",\"id\":\"airport_4063\",\"score\":1.0098211451111556,\"sort\":[\"_score\"]},\r\n{\"index\":\"travelsearch_1bf0c4c01d25b582_4c1c5584\",\"id\":\"airport_3442\",\"score\":1.0098211451111556,\"sort\":[\"_score\"]},\r\n{\"index\":\"travelsearch_1bf0c4c01d25b582_4c1c5584\",\"id\":\"airport_6448\",\"score\":1.0032424768865669,\"sort\":[\"_score\"]}],\r\n\"meta\":{\"status\":{\"total\":1,\"failed\":0,\"successful\":1},\"request\":{\"query\":{\"query\":\"grand\"},\"size\":5,\"from\":0,\"highlight\":null,\r\n\"fields\":null,\"facets\":null,\"explain\":false,\r\n\"sort\":[\"-_score\"],\"includeLocations\":false,\r\n\"search_after\":null,\"search_before\":null},\r\n\"hits\":[],\"total_hits\":169,\"max_score\":1.063667683545401,\"took\":208427,\"facets\":null}}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Tenga en cuenta que los resultados de la b\u00fasqueda tambi\u00e9n incluyen algunos metadatos \u00fatiles que muestran el n\u00famero total de aciertos\/parejas, el tiempo de ejecuci\u00f3n y mucho m\u00e1s.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Las posibilidades de uso de Couchbase en aplicaciones basadas en b\u00fasquedas son infinitas.<\/p>\n<p>Con todos los diferentes tipos de consultas y otras opciones de b\u00fasqueda disponibles, a\u00fan queda mucho por aprender. Aqu\u00ed tienes algunos puntos de partida:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Lea la documentaci\u00f3n y sustituya por <a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-introduction.html?ref=blog\" target=\"_blank\" rel=\"noopener\">otro tipo de consulta de b\u00fasqueda<\/a>.<\/li>\n<li>Complete el <a href=\"https:\/\/learn.couchbase.com\/store?utf8=%E2%9C%93&amp;ss=1&amp;ct=82921&amp;commit=Filter&amp;ref=blog\" target=\"_blank\" rel=\"noopener\">Curso de certificaci\u00f3n de Node.js y Couchbase.<\/a><\/li>\n<li>Toma el <a href=\"https:\/\/learn.couchbase.com\/store\/1072989-cb131-couchbase-associate-architect-certification-course\/?ref=blog\" target=\"_blank\" rel=\"noopener\">curso gratuito en l\u00ednea de certificaci\u00f3n de arquitecto<\/a> que cubre la b\u00fasqueda de texto completo y m\u00e1s<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Con esto terminamos esta serie sobre desarrollo con Node.js y Couchbase. \u00a1Buena suerte en tu viaje continuo con JavaScript!<\/p>\n<p><em>P\u00f3ngase al d\u00eda con el resto de la serie Node.js + Couchbase how-to:<\/em><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/get-started-nodejs-sdk-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo empezar con el SDK de Node.js para Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-create-nodejs-async-get-upsert-calls-with-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo crear llamadas as\u00edncronas Get\/Upsert con Node.js y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/build-a-rest-api-with-node-js-express-and-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Construir una aplicaci\u00f3n basada en REST con Node.js, Express y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo consultar datos JSON con N1QL para Node.js y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-full-text-search-javascript-app\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo a\u00f1adir la funci\u00f3n de b\u00fasqueda de texto completo a su aplicaci\u00f3n JavaScript<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 30px\" aria-hidden=\"true\"><\/div>\n<div style=\"text-align: center\"><strong>Es hora de que lo pruebes por ti mismo:<br \/><a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Descargue Couchbase 7 hoy mismo<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Es inevitable: Si est\u00e1s trabajando con una base de datos de documentos, eventualmente vas a necesitar buscar (y a trav\u00e9s de) tus documentos JSON. En este tutorial, a\u00f1adir\u00e1s las capacidades de b\u00fasqueda de texto completo de Couchbase a la API REST b\u00e1sica construida con [...]<\/p>","protected":false},"author":75185,"featured_media":11937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,2165,9381,9327,1822,1812,7277,2201],"tags":[2312,1254,1543,1261,1950],"ppma_author":[9163],"class_list":["post-11930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-full-text-search","category-indexing","category-javascript","category-node-js","category-n1ql-query","category-text-analysis","category-tools-sdks","tag-document-database","tag-express","tag-javascript","tag-json","tag-rest-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Full-Text Search Functionality: Adding to Your JavaScript App<\/title>\n<meta name=\"description\" content=\"Find out how to add full-text search functionality to your JavaScript App. This will allow you to find the JSON documents containing the text you need.\" \/>\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\/how-to-full-text-search-javascript-app\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Add Full-Text Search Functionality to Your JavaScript App\" \/>\n<meta property=\"og:description\" content=\"Find out how to add full-text search functionality to your JavaScript App. This will allow you to find the JSON documents containing the text you need.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-full-text-search-javascript-app\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-20T07:00:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:22:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app-social.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"418\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app-social.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@1tylermitchell\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\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\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/\"},\"author\":{\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0\"},\"headline\":\"How to Add Full-Text Search Functionality to Your JavaScript App\",\"datePublished\":\"2021-09-20T07:00:19+00:00\",\"dateModified\":\"2025-06-14T04:22:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/\"},\"wordCount\":1258,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg\",\"keywords\":[\"document database\",\"express\",\"javascript\",\"JSON\",\"REST API\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Full-Text Search\",\"Indexing\",\"JavaScript\",\"Node.js\",\"SQL++ \/ N1QL Query\",\"Text Analysis\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/\",\"name\":\"Full-Text Search Functionality: Adding to Your JavaScript App\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg\",\"datePublished\":\"2021-09-20T07:00:19+00:00\",\"dateModified\":\"2025-06-14T04:22:55+00:00\",\"description\":\"Find out how to add full-text search functionality to your JavaScript App. This will allow you to find the JSON documents containing the text you need.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Learn how to use the Full-Text Search API in Couchbase to add search to your JavaScript application\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Add Full-Text Search Functionality to Your JavaScript App\"}]},{\"@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\/684cc0e5c60cd2e4b591db9621494ed0\",\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"caption\":\"Tyler Mitchell - Senior Product Marketing Manager\"},\"description\":\"Works as Senior Product Marketing Manager at Couchbase, helping bring knowledge about products into the public limelight while also supporting our field teams with valuable content. His personal passion is all things geospatial, having worked in GIS for half his career. Now AI and Vector Search is top of mind.\",\"sameAs\":[\"https:\/\/linkedin.com\/in\/tylermitchell\",\"https:\/\/x.com\/1tylermitchell\",\"https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/tylermitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Full-Text Search Functionality: Adding to Your JavaScript App","description":"Descubra c\u00f3mo a\u00f1adir la funcionalidad de b\u00fasqueda de texto completo a su aplicaci\u00f3n JavaScript. Esto le permitir\u00e1 encontrar los documentos JSON que contienen el texto que necesita.","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\/how-to-full-text-search-javascript-app\/","og_locale":"es_MX","og_type":"article","og_title":"How to Add Full-Text Search Functionality to Your JavaScript App","og_description":"Find out how to add full-text search functionality to your JavaScript App. This will allow you to find the JSON documents containing the text you need.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/how-to-full-text-search-javascript-app\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-09-20T07:00:19+00:00","article_modified_time":"2025-06-14T04:22:55+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app-social.jpg","type":"image\/jpeg"}],"author":"Tyler Mitchell - Senior Product Marketing Manager","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app-social.jpg","twitter_creator":"@1tylermitchell","twitter_misc":{"Written by":"Tyler Mitchell - Senior Product Marketing Manager","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/"},"author":{"name":"Tyler Mitchell - Senior Product Marketing Manager","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0"},"headline":"How to Add Full-Text Search Functionality to Your JavaScript App","datePublished":"2021-09-20T07:00:19+00:00","dateModified":"2025-06-14T04:22:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/"},"wordCount":1258,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg","keywords":["document database","express","javascript","JSON","REST API"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Full-Text Search","Indexing","JavaScript","Node.js","SQL++ \/ N1QL Query","Text Analysis","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/","url":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/","name":"Full-Text Search Functionality: Adding to Your JavaScript App","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg","datePublished":"2021-09-20T07:00:19+00:00","dateModified":"2025-06-14T04:22:55+00:00","description":"Descubra c\u00f3mo a\u00f1adir la funcionalidad de b\u00fasqueda de texto completo a su aplicaci\u00f3n JavaScript. Esto le permitir\u00e1 encontrar los documentos JSON que contienen el texto que necesita.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/full-text-search-fts-functionality-javascript-nodejs-app.jpg","width":1200,"height":628,"caption":"Learn how to use the Full-Text Search API in Couchbase to add search to your JavaScript application"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/how-to-full-text-search-javascript-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Add Full-Text Search Functionality to Your JavaScript App"}]},{"@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\/684cc0e5c60cd2e4b591db9621494ed0","name":"Tyler Mitchell - Director de Marketing de Producto","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75","url":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","caption":"Tyler Mitchell - Senior Product Marketing Manager"},"description":"Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz p\u00fablica, mientras que tambi\u00e9n apoya a nuestros equipos de campo con contenido valioso. Su pasi\u00f3n personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la b\u00fasqueda vectorial son lo primero en lo que piensa.","sameAs":["https:\/\/linkedin.com\/in\/tylermitchell","https:\/\/x.com\/1tylermitchell","https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/tylermitchell\/"}]}},"authors":[{"term_id":9163,"user_id":75185,"is_guest":0,"slug":"tylermitchell","display_name":"Tyler Mitchell - Senior Product Marketing Manager","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/876da1e4284f1832c871b3514caf7867357744b8c0a370ef6f53a79dee2f379e?s=96&d=mm&r=g","author_category":"","last_name":"Mitchell - Senior Product Marketing Manager","first_name":"Tyler","job_title":"Senior Product Marketing Manager","user_url":"","description":"Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz p\u00fablica, mientras que tambi\u00e9n apoya a nuestros equipos de campo con contenido valioso. Su pasi\u00f3n personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la b\u00fasqueda vectorial son lo primero en lo que piensa."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11930","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\/75185"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=11930"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11930\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11937"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=11930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=11930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=11930"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=11930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}