{"id":4804,"date":"2018-03-19T13:17:25","date_gmt":"2018-03-19T20:17:25","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4804"},"modified":"2025-06-13T17:22:37","modified_gmt":"2025-06-14T00:22:37","slug":"index-partitioning-couchbase-server","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/","title":{"rendered":"Index Partitioning in Couchbase Server 5.5"},"content":{"rendered":"<div class=\"paragraph\">\n<p>Index partitioning is a new feature available in Couchbase Server 5.5.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Check out the <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-server-5-5-beta-3\/\">Couchbase Server 5.5 Developer Build announcement<\/a>\u00a0and <a href=\"https:\/\/www.couchbase.com\/downloads\/\">download the release<\/a>\u00a0for free right now.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>In this post, I\u2019m going to cover:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>Why you might want to use index partitioning<\/li>\n<li>An example of how to do it<\/li>\n<li>Partition elimination<\/li>\n<li>Some caveats to be careful with<\/li>\n<\/ul>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_index_partitioning\">Index partitioning<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>When developing your application, you may want to take advantage of Couchbase Server\u2019s ease of scaling to give more resources to indexing. With <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/clustersetup\/services-mds.html\">multi-dimensional scaling (MDS)<\/a>, one option is that you can add multiple high-end machines to the cluster with index capabilities as you need them.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>To take advantage of multiple nodes with index services, you would have to create <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-index-replicas\/\">index replicas<\/a>. This is still possible, and if this is working for you, it\u2019s not going away.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10301-index-replicas.png\" alt=\"Index replicas\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Couchbase Server 5.5 is introducing another way to spread the index load around: index partitioning. Instead of replicating an index, you can now split up the index amongst the nodes with hashing.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10302-index-partitioning.png\" alt=\"Index partitioning\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>And, you can use partitioning and replicas together in concert. Index partition replicas will be used automatically, and with no interruption if a node goes down.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10303-index-partitioning-with-replicas.png\" alt=\"Index partitioning with replicas\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The primary benefits to index partitioning:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>The index scan load is now <strong>balanced<\/strong> amongst all the index nodes. This leads to a more even distribution of work and better performance.<\/li>\n<li>A query that uses aggregation (e.g. <code>SUM<\/code> + <code>GROUP BY<\/code>) can be <strong>run in parallel<\/strong> on each partition.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_how_to_use_index_partitioning\">How to use index partitioning<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>The syntax for creating an index partition is <code>PARTITION BY HASH(&lt;field&gt;)<\/code>. For example, if I wanted to create a compound index on the &#8220;travel-sample&#8221; bucket for fields airline, flight, source_airport, and destination_airport:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">CREATE INDEX ix_route ON `travel-sample` (airline, flight, source_airport, destination_airport) PARTITION BY HASH(airline);<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>When you create this index, it will show as &#8220;partitioned&#8221; in the Couchbase Console.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10304-index-partitioning-in-couchbase-console.png\" alt=\"Index partitioning in Couchbase Console\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_partition_elimination\">Partition elimination<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Partition elimination is one of the benefits of using index partitioning. This is a feature that is unique in the NoSQL market to Couchbase.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Let\u2019s say you have a partition on the airline field, as above. Next, write a query that uses that index and specifies the airline value:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT t.*\r\nFROM `travel-sample` t\r\nWHERE airline IN [\"UA\", \"AA\"]\r\nAND source_airport = \"SFO\"<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Then, the indexing service will only scan the matching partitions (&#8220;UA&#8221; and &#8220;AA&#8221;). This leads to a faster range query response, and the same latency as a non-partitioned index, regardless of cluster size. More on this later.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_index_partitioning_caveats\">Index partitioning caveats<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>You may have noticed that &#8220;airline&#8221; was used in the above <code>CREATE INDEX<\/code> command. When using index partitioning, you must specify one (or more) fields to give to the hash to use for partitioning. This hash will determine how to divide up the index.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The simplest thing you can do is use the document key in the hash:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">CREATE INDEX ix_route2 ON `travel-sample` (airline, flight, source_airport, destination_airport) \r\nPARTITION BY HASH(META().Id);<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>But unlike Couchbase\u2019s key-value engine, you can use whatever fields you like. But you must keep in mind that these fields should be considered <strong>immutable<\/strong>. That is, you shouldn\u2019t change the value of the fields. So, if you have a field with a value that does not typically change (many Couchbase users create a &#8220;type&#8221; field, for instance), that would be a good candidate for partitioning.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>If you choose to index on an &#8220;immutable&#8221; field, be warned that this may also cause some skewing of the partition (using <code>META().Id<\/code> will minimize the amount of skew). If you partition on the &#8220;type&#8221; field, where 10% of documents have a type of &#8220;order&#8221; and 90% of documents have a type of &#8220;invoice&#8221;, then the partition is likely to look similar. Index partitioning uses an optimization algorithm to balance RAM, CPU and data size during rebalancing, but skewing is still going to be a possibility.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>So <strong>why wouldn\u2019t you use META().Id<\/strong> to reduce skewing? Recall the partition elimination section above. If your queries fall along the same lines as your index partitions, then you are minimizing the &#8220;scatter+gather&#8221; operations having to check all partitions, and you can further reduce latency.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>One more caveat: <strong>index partitioning is an Enterprise Edition only feature<\/strong>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_summary\">Summary<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Index partitioning allows you to more easily and automatically scale out your indexing capabilities. If you are using a lot of N1QL queries in your project, then this will come in very handy and make your job much easier.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>If you have any questions about index partitioning or anything else with indexing, please check out the <a href=\"https:\/\/www.couchbase.com\/forums\/c\/couchbase-server\/\">Couchbase Server Forums<\/a> or the <a href=\"https:\/\/www.couchbase.com\/forums\/c\/sql\/16\">N1QL forums<\/a> if you have questions about creating indexes and queries. Be sure to <a href=\"https:\/\/www.couchbase.com\/downloads\/\">download the Couchbase Server 5.5 release<\/a> today, and try it out. We\u2019d love to hear your feedback.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>You can reach me by leaving a comment below or finding me on <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Index partitioning is a new feature available in Couchbase Server 5.5. Check out the Couchbase Server 5.5 Developer Build announcement\u00a0and download the release\u00a0for free right now. In this post, I\u2019m going to cover: Why you might want to use index [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":4805,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1812],"tags":[2258,2182,1505,2175,1696],"ppma_author":[8937],"class_list":["post-4804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-n1ql-query","tag-5-5","tag-devbuild","tag-index","tag-index-partitioning","tag-indexing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Index Partitioning in Couchbase Server 5.5 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.\" \/>\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\/index-partitioning-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Index Partitioning in Couchbase Server 5.5\" \/>\n<meta property=\"og:description\" content=\"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-19T20:17:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:22:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"701\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Index Partitioning in Couchbase Server 5.5\",\"datePublished\":\"2018-03-19T20:17:25+00:00\",\"dateModified\":\"2025-06-14T00:22:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\"},\"wordCount\":763,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png\",\"keywords\":[\"5.5\",\"devbuild\",\"Index\",\"index partitioning\",\"Indexing\"],\"articleSection\":[\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\",\"name\":\"Index Partitioning in Couchbase Server 5.5 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png\",\"datePublished\":\"2018-03-19T20:17:25+00:00\",\"dateModified\":\"2025-06-14T00:22:37+00:00\",\"description\":\"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png\",\"width\":1280,\"height\":701},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index Partitioning in Couchbase Server 5.5\"}]},{\"@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\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Index Partitioning in Couchbase Server 5.5 - The Couchbase Blog","description":"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.","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\/index-partitioning-couchbase-server\/","og_locale":"en_US","og_type":"article","og_title":"Index Partitioning in Couchbase Server 5.5","og_description":"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.","og_url":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-03-19T20:17:25+00:00","article_modified_time":"2025-06-14T00:22:37+00:00","og_image":[{"width":1280,"height":701,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png","type":"image\/png"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Index Partitioning in Couchbase Server 5.5","datePublished":"2018-03-19T20:17:25+00:00","dateModified":"2025-06-14T00:22:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/"},"wordCount":763,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png","keywords":["5.5","devbuild","Index","index partitioning","Indexing"],"articleSection":["Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/","url":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/","name":"Index Partitioning in Couchbase Server 5.5 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png","datePublished":"2018-03-19T20:17:25+00:00","dateModified":"2025-06-14T00:22:37+00:00","description":"Index partitioning, new to Couchbase 5.5, allows you to more easily and automatically scale out your indexing capabilities.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/103-index-cards.png","width":1280,"height":701},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/index-partitioning-couchbase-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Index Partitioning in Couchbase Server 5.5"}]},{"@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\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4804","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\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4804"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4804\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/4805"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4804"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}