{"id":2289,"date":"2016-06-04T05:14:50","date_gmt":"2016-06-04T05:14:49","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2289"},"modified":"2024-09-12T01:29:35","modified_gmt":"2024-09-12T08:29:35","slug":"multi-node-full-text-search","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/","title":{"rendered":"Multi-Node Full Text Search in Couchbase 4.5 Beta"},"content":{"rendered":"<h2>Scale out Full Text Search in Couchbase Server 4.5 Beta<\/h2>\n<p>Couchbase Server 4.5 includes a new service, <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-4.5-developer-preview-couchbase-fts\/\">full text search (FTS) <\/a>. In this blog, I&#8217;ll talk about how FTS scales out across nodes, how to replicate indexes, and how it behaves in a rebalance.<\/p>\n<p>Since the Couchbase Server 4.5 Developer Preview released, the FTS team has been busy. \u00a0The beta release of Couchbase Server 4.5 not only squashes a lot of FTS bugs, it also includes <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/fts\/fts-whats-new.html#topic_jzy_p5v_vv\">many big FTS improvements<\/a>:<\/p>\n<ul>\n<li>12x faster indexing performance<\/li>\n<li>better statistics<\/li>\n<li>support for authentication and role based access control<\/li>\n<li>audit logging of administrator events<\/li>\n<li>support for partial results<\/li>\n<\/ul>\n<p>The most notable new search feature in the 4.5 beta is the ability to run the FTS service across multiple nodes. \u00a0You can try it out today with the beta, and what you read here will still apply when Couchbase Server 4.5 goes GA.<\/p>\n<p>Let me get the disclaimer out of the way right now: \u00a0<strong>FTS will remain a developer preview in the GA version of Couchbase Server 4.5, so don&#8217;t run it on a production server please<\/strong>. There&#8217;s a lot of really great functionality in FTS but we haven&#8217;t yet ticked off all the performance and system testing check boxes on our to do list. On the plus side, that gives us a chance to address some of the feedback we&#8217;re getting from early test users. \u00a0(Got feedback? Feel free to\u00a0email me directly at will dot gardella at couchbase dot com)<\/p>\n<p>Ok, let&#8217;s get to the good stuff. You can use the search service to index and search text in your Couchbase documents without relying on a third party search package. The new search service joins the data, index, and query services and can be managed like other \u00a0services for the purposes of multi-dimensional scaling (MDS). \u00a0Note that unlike N1QL, the search service does both full text query and indexing in a single service.<\/p>\n<h2>Distributed Search Service &#8211; \u00a0Under the Hood<span style=\"font-size: 13px; line-height: 1.6em;\">\u00a0<\/span><\/h2>\n<p>For the most part, distributed search indexes &#8220;just work&#8221;: \u00a0the Couchbase Full Text Search service takes advantage of new hardware as you add nodes, and full text indexes are failed over and rebalanced along with the data service. This section talks about the mechanisms that enable this, which you usually don&#8217;t need to know as a user but you will sometimes encounter, as in partial search results (touched on\u00a0later).<\/p>\n<p>From the start, full text search was designed to distribute \u00a0text indexes across nodes, in very much the same way that the data service distributes data in buckets. \u00a0If you understand Couchbase Server&#8217;s <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/concepts\/distributed-data-management.html\">buckets and vBuckets<\/a>, \u00a0you&#8217;ve got a good mental model for understanding this. \u00a0The bucket is a logical unit of data containment that is easy to work with, and the vBucket is a physical portion of the data that&#8217;s in a bucket, that lives on a specific node on a cluster. When you turn on replication on a bucket, Couchbase Server creates copies of all the necessary vBuckets that make up that bucket. Couchbase Server also makes sure that the layout of those vBuckets is optimal, which is itself a complex topic but for now, you can just think of it as balancing the locations of the vBuckets so that they are spread evenly across nodes.<\/p>\n<p>FTS works similarly. Full text indexes are automatically divided into fragments called <strong><em>pindexes<\/em><\/strong>, which is short for &#8220;partitioned indexes\u201d or &#8220;physical indexes&#8221;, depending on who you ask. \u00a0Like a bucket, a full text index is a logical concept. The pindex is the physical implementation of the index, just like the vBucket is the physical implementation of the bucket.<\/p>\n<p>Pindexes are physically distributed across the Couchbase nodes that run the search service, however many that might be. In the developer preview, it was a single node but that restriction has been lifted in the Beta. In the examples below, we&#8217;ll use just two nodes to keep it simple.<\/p>\n<h2>Adding a search node<\/h2>\n<p>Time to get hands on. If you have Couchbase Server 4.5 Beta or newer, you&#8217;re all ready to go. You&#8217;re going to need to set up more than one node, so get a VM ready. For this example, I&#8217;m going to use a couple of Windows Server 2012 VMs.<\/p>\n<p>Let&#8217;s go ahead and start with a single node running the search service. We&#8217;ll create a simple index on the travel-sample bucket&#8217;s hotel documents. If you don&#8217;t have the travel sample installed, you can get it by clicking <em>Settings<\/em> &gt; <em>Sample Buckets<\/em> and then checking the box.<\/p>\n<p>For the purposes of this demo, any full text index will do. I created an index on type=&#8221;hotel&#8221; (don&#8217;t forget to disable the default type mapping) with two fields, &#8220;name&#8221; and &#8220;description&#8221;, store = true, and &#8220;index only specified fields&#8221; just so it will build fast.<\/p>\n<p>Here&#8217;s the curl command, in case you have a UI allergy:<\/p>\n<pre><code class=\"language-bash\">curl -XPUT -H \"Content-Type: application\/json\" \r\n https:\/\/localhost:8094\/api\/index\/hotel \r\n -d '{\r\n  \"type\": \"fulltext-index\",\r\n  \"name\": \"hotel\",\r\n  \"sourceType\": \"couchbase\",\r\n  \"sourceName\": \"travel-sample\",\r\n  \"planParams\": {\r\n    \"maxPartitionsPerPIndex\": 32,\r\n    \"numReplicas\": 0,\r\n    \"hierarchyRules\": null,\r\n    \"nodePlanParams\": null,\r\n    \"pindexWeights\": null,\r\n    \"planFrozen\": false\r\n  },\r\n  \"params\": {\r\n    \"mapping\": {\r\n      \"byte_array_converter\": \"json\",\r\n      \"default_analyzer\": \"standard\",\r\n      \"default_datetime_parser\": \"dateTimeOptional\",\r\n      \"default_field\": \"_all\",\r\n      \"default_mapping\": {\r\n        \"display_order\": \"1\",\r\n        \"dynamic\": true,\r\n        \"enabled\": false\r\n      },\r\n      \"default_type\": \"_default\",\r\n      \"index_dynamic\": true,\r\n      \"store_dynamic\": false,\r\n      \"type_field\": \"type\",\r\n      \"types\": {\r\n        \"hotel\": {\r\n          \"display_order\": \"0\",\r\n          \"dynamic\": false,\r\n          \"enabled\": true,\r\n          \"properties\": {\r\n            \"description\": {\r\n              \"dynamic\": false,\r\n              \"enabled\": true,\r\n              \"fields\": [\r\n                {\r\n                  \"analyzer\": \"\",\r\n                  \"display_order\": \"0\",\r\n                  \"include_in_all\": true,\r\n                  \"include_term_vectors\": true,\r\n                  \"index\": true,\r\n                  \"name\": \"description\",\r\n                  \"store\": true,\r\n                  \"type\": \"text\"\r\n                }\r\n              ]\r\n            },\r\n            \"name\": {\r\n              \"dynamic\": false,\r\n              \"enabled\": true,\r\n              \"fields\": [\r\n                {\r\n                  \"analyzer\": \"\",\r\n                  \"display_order\": \"1\",\r\n                  \"include_in_all\": true,\r\n                  \"include_term_vectors\": true,\r\n                  \"index\": true,\r\n                  \"name\": \"name\",\r\n                  \"store\": true,\r\n                  \"type\": \"text\"\r\n                }\r\n              ]\r\n            }\r\n          }\r\n        }\r\n      }\r\n    },\r\n    \"store\": {\r\n      \"kvStoreName\": \"forestdb\"\r\n    }\r\n  },\r\n  \"sourceParams\": {\r\n    \"clusterManagerBackoffFactor\": 0,\r\n    \"clusterManagerSleepInitMS\": 0,\r\n    \"clusterManagerSleepMaxMS\": 2000,\r\n    \"dataManagerBackoffFactor\": 0,\r\n    \"dataManagerSleepInitMS\": 0,\r\n    \"dataManagerSleepMaxMS\": 2000,\r\n    \"feedBufferAckThreshold\": 0,\r\n    \"feedBufferSizeBytes\": 0\r\n  }\r\n}'\r\n<\/code><\/pre>\n<p>When you&#8217;re done, you can search for a common word like &#8220;Inn&#8221; to make sure things are working.<\/p>\n<p style=\"color: #333333; line-height: 20.8px; text-align: left;\"><span style=\"line-height: 20.8px;\">When you take a look at your Couchbase data directory, you&#8217;ll see an <em>@fts<\/em>\u00a0directory. Open it and you will see a\u00a0bunch of directories containing the pindexes.<\/span><\/p>\n<p style=\"color: #333333; line-height: 20.8px; text-align: left;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-7.23.26-pm.png\" alt=\"pindexes in the data directory\" \/><\/p>\n<p style=\"color: #333333; line-height: 20.8px; text-align: left;\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-7.24.07-pm.png\" alt=\"pindexes\" \/><\/p>\n<h2>Second Search Node and Rebalance<\/h2>\n<p>Go ahead and add a second node to the cluster, like you normally would. <strong>Don&#8217;t forget to tick the box to enable the search service.<\/strong><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.07.16-pm.png\" alt=\"add a node\" \/><\/p>\n<p>You will see a screen that looks like this when you get done, showing a server pending rebalance.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.09.26-pm.png\" alt=\"rebalance pending\" \/><\/p>\n<p>In this case, I see a fail over warning because the travel sample data has no replicas. Go in and hit the rebalance button. Documents begin to copy to the new node, replicas are created, and the travel sample&#8217;s views show as &#8220;building&#8221; because they are a form of local index, so the data rebalance means views also have to be rebuilt as the active data moves. (If you want to save yourself some time for the purposes of this demo, you can delete the views). Your pindexes are also rebalanced over the available nodes.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.12.24-pm.png\" alt=\"failover warning\" \/><br \/>\nOnce the process finishes, you will now have one half of the pindexes on each server.<\/p>\n<p><img decoding=\"async\" style=\"line-height: 20.8px; opacity: 0.9;\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.24.28-pm.png\" alt=\"index replicas\" \/><\/p>\n<p><span style=\"color: #333333; line-height: 20.8px; text-align: left;\">To verify this, check your Couchbase da<\/span><span style=\"line-height: 1.6em;\">ta directory again. You will see half as many directories:<\/span><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.24.02-pm.png\" alt=\"half of the pindexes\" \/><\/p>\n<h2>Index Replicas<\/h2>\n<p>Full text indexes can be replicated, just like you can have active and replica documents in Couchbase. Like document replicas, text index replicas get automatically laid out in the cluster in a balanced distribution depending on what hardware is available. Replicating full text indexes is mainly to speed up failover. Unlike documents, full text indexes are not at risk of data loss because they can always be recreated by reindexing using the index definition.<\/p>\n<p>When you create or update a full text index, you have \u00a0the option to specify one or two replicas. To do this, navigate to your index definition, click <em>Edit<\/em>, and then check <em>Show advanced settings<\/em>.<br \/>\n<img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.31.56-pm.png\" alt=\"Edit index advanced settings\" \/><\/p>\n<p>In <em>Plan Params<\/em>, change <em>numReplicas<\/em> to 1 and then<em> Update Index<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.32.24-pm.png\" alt=\"set number of replicas\" \/><br \/>\nAs soon as you save your definition,\u00a0Couchbase Server will begin creating the active and replica text indexes. \u00a0This will give you another copy of the index. Again, you can verify this by looking at one of the data@fts directories an counting the pindexes. Each node should now have 1\/2 of the active pindexes and 1\/2 of the replica pindexes.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.34.39-pm.png\" alt=\"pindexes again\" \/><\/p>\n<p>You can also see this by clicking on the <em>Server Nodes<\/em> tab, clicking on one of the servers and then expanding &#8220;<em>Full Text Search Stats<\/em>&#8221; for the index you created. You will see stats for <em>pindexes actual<\/em> (how many exist) and<em> pindexes target<\/em> (how many should exist, given the number of replicas you&#8217;ve requested).<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.37.18-pm.png\" alt=\"Monitoring fts stats for pindexes\" \/><\/p>\n<h2>Failing Over<\/h2>\n<p>Now failover one node. If you search now, you will get partial results &#8211; that is, you will get search results from the remaining pindexes. This is by design since some applications may elect to continue with partial results rather than throw an error. After all, with a large enough data set, users may not even notice missing documents.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.41.59-pm.png\" alt=\"rebalance with replica\" \/><\/p>\n<p>Now, rebalance the node. Rebalance with replicas is quite fast. (If you didn&#8217;t delete the travel sample views earlier, the failover takes significantly longer).<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.48.54-pm.png\" alt=\"rebalance pending\" \/><br \/>\nWhen you hit rebalance, the other node takes over very quickly by activating replicas &#8211; both document replicas and pindex replicas. This promotion is instantaneous. If indexing is ongoing, either because the index isn&#8217;t fully caught up or document mutations are going on, the full text indexes may take more time to build. As vBuckets move, nodes running the FTS service will reconnect their DCP streams to wherever the vBuckets ended up in the rebalance.<\/p>\n<p>You should see something like this when the rebalance completes. Now we have no replicas and we&#8217;re back to the number of pindexes that we had at the beginning:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/june\/multi-node-full-text-search\/screen-shot-2016-06-03-at-8.52.29-pm.png\" alt=\"All done\" \/><\/p>\n<h2>Failing Over without Replicas<\/h2>\n<p>You might be wondering what would happen if you were to do the above experiment without having created any full text index replicas first. That works too, and it&#8217;s worth doing at least once to see what happens. You won&#8217;t have primaries for some of your pindexes &#8211; exactly half in this case. That&#8217;s OK &#8211; as I mentioned above, you don&#8217;t have data loss, because the missing pindexes can be recreated by reindexing the documents using the original index definitions. You will get partial results, and you will get them for a longer period of time, too. This is because when you do a rebalance, the missing pindexes have to start from scratch and will not be as caught up as they would be if there were pindex replicas available.<\/p>\n<h2>Try it out<\/h2>\n<p>Distributed full text indexes are one of my favorite features of this release. They definitely take longer to explain than they take to use! We invite you to try them out and let us know what you think. Happy searching!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scale out Full Text Search in Couchbase Server 4.5 Beta Couchbase Server 4.5 includes a new service, full text search (FTS) . In this blog, I&#8217;ll talk about how FTS scales out across nodes, how to replicate indexes, and how [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[9036],"class_list":["post-2289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Multi-Node Full Text Search in Couchbase 4.5 Beta - The Couchbase Blog<\/title>\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\/multi-node-full-text-search\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Multi-Node Full Text Search in Couchbase 4.5 Beta\" \/>\n<meta property=\"og:description\" content=\"Scale out Full Text Search in Couchbase Server 4.5 Beta Couchbase Server 4.5 includes a new service, full text search (FTS) . In this blog, I&#8217;ll talk about how FTS scales out across nodes, how to replicate indexes, and how [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-04T05:14:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T08:29:35+00:00\" \/>\n<meta name=\"author\" content=\"Will Gardella, Director, Product Management, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Will Gardella, Director, Product Management, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\"},\"author\":{\"name\":\"Will Gardella, Director, Product Management, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/16361083d282711e0137f93b708ce062\"},\"headline\":\"Multi-Node Full Text Search in Couchbase 4.5 Beta\",\"datePublished\":\"2016-06-04T05:14:49+00:00\",\"dateModified\":\"2024-09-12T08:29:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\"},\"wordCount\":1662,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\",\"name\":\"Multi-Node Full Text Search in Couchbase 4.5 Beta - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-06-04T05:14:49+00:00\",\"dateModified\":\"2024-09-12T08:29:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Multi-Node Full Text Search in Couchbase 4.5 Beta\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\/16361083d282711e0137f93b708ce062\",\"name\":\"Will Gardella, Director, Product Management, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/94034c6625aea3f838289a292d6904f9\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/02b02044056ac5f8f16d9f9bb9655835aec233a42c12d08f4e95e030c522d35a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/02b02044056ac5f8f16d9f9bb9655835aec233a42c12d08f4e95e030c522d35a?s=96&d=mm&r=g\",\"caption\":\"Will Gardella, Director, Product Management, Couchbase\"},\"description\":\"Will Gardella is Director of Product Management for analytics at Couchbase. Previously, he was a product manager in the big data platform team at HP, a senior director of product management for SAP HANA, and the senior director of SAP Research's global Big Data program focused on big data and machine learning.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/will-gardella\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Multi-Node Full Text Search in Couchbase 4.5 Beta - The Couchbase Blog","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\/multi-node-full-text-search\/","og_locale":"en_US","og_type":"article","og_title":"Multi-Node Full Text Search in Couchbase 4.5 Beta","og_description":"Scale out Full Text Search in Couchbase Server 4.5 Beta Couchbase Server 4.5 includes a new service, full text search (FTS) . In this blog, I&#8217;ll talk about how FTS scales out across nodes, how to replicate indexes, and how [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-06-04T05:14:49+00:00","article_modified_time":"2024-09-12T08:29:35+00:00","author":"Will Gardella, Director, Product Management, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Will Gardella, Director, Product Management, Couchbase","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/"},"author":{"name":"Will Gardella, Director, Product Management, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/16361083d282711e0137f93b708ce062"},"headline":"Multi-Node Full Text Search in Couchbase 4.5 Beta","datePublished":"2016-06-04T05:14:49+00:00","dateModified":"2024-09-12T08:29:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/"},"wordCount":1662,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/","url":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/","name":"Multi-Node Full Text Search in Couchbase 4.5 Beta - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-06-04T05:14:49+00:00","dateModified":"2024-09-12T08:29:35+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/multi-node-full-text-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Multi-Node Full Text Search in Couchbase 4.5 Beta"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/16361083d282711e0137f93b708ce062","name":"Will Gardella, Director, Product Management, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/94034c6625aea3f838289a292d6904f9","url":"https:\/\/secure.gravatar.com\/avatar\/02b02044056ac5f8f16d9f9bb9655835aec233a42c12d08f4e95e030c522d35a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/02b02044056ac5f8f16d9f9bb9655835aec233a42c12d08f4e95e030c522d35a?s=96&d=mm&r=g","caption":"Will Gardella, Director, Product Management, Couchbase"},"description":"Will Gardella is Director of Product Management for analytics at Couchbase. Previously, he was a product manager in the big data platform team at HP, a senior director of product management for SAP HANA, and the senior director of SAP Research's global Big Data program focused on big data and machine learning.","url":"https:\/\/www.couchbase.com\/blog\/author\/will-gardella\/"}]}},"authors":[{"term_id":9036,"user_id":65,"is_guest":0,"slug":"will-gardella","display_name":"Will Gardella, Director, Product Management, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/02b02044056ac5f8f16d9f9bb9655835aec233a42c12d08f4e95e030c522d35a?s=96&d=mm&r=g","author_category":"","last_name":"Gardella","first_name":"Will","job_title":"","user_url":"","description":"Will Gardella is Director of Product Management for analytics at Couchbase. Previously, he was a product manager in the big data platform team at HP, a senior director of product management for SAP HANA, and the senior director of SAP Research's global Big Data program focused on big data and machine learning."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2289"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2289"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}