{"id":7374,"date":"2019-08-09T10:00:32","date_gmt":"2019-08-09T17:00:32","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7374"},"modified":"2025-06-13T20:46:21","modified_gmt":"2025-06-14T03:46:21","slug":"advanced-filtering-with-xdcr-6-5","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/","title":{"rendered":"Advanced Filtering with XDCR 6.5"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Customers use <a href=\"https:\/\/www.couchbase.com\/products\/xdcr\/\">XDCR<\/a> for various use cases from high availability to data locality to disaster recovery to <a href=\"https:\/\/www.couchbase.com\/resources\/concepts\/what-is-cloud-migration\/\">cloud migration<\/a> and hybrid cloud deployments. To meet these use cases, there are a number of circumstances where they would want to replicate only a subset of data to a different cluster. We introduced key based filtering a couple years ago to enable filtered replication. With 6.5, we are extending this functionality to provide advanced filtering capabilities with XDCR.This feature allows filtering based on <\/span><i><span style=\"font-weight: 400\">keys, values and metadata<\/span><\/i><span style=\"font-weight: 400\"> using N1QL like syntax where you can construct filter expressions to filter data based on your business logic.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Advanced filtering is providing the ability to filter replication in two different categories:<\/span><\/p>\n<h3><span style=\"font-weight: 400\">a.Expression based filtering\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Filter expressions are applied to the source bucket data. Advanced filtering supports various language constructs to build filters such as regex, arithmetic, logical and relational operators, keywords, expressions, number Functions, date functions, negative lookahead etc., on keys, values, metadata and CAS. Just like predicate of N1QL queries, expressions can be constructed using the supported language constructs.<\/span><\/p>\n<p><span style=\"font-weight: 400\">These expressions based filtering we believe is extremely useful for filtering data by constructing expressions relevant to the business need such as geo-fencing use cases.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Below mentioned is the field where you enter the expression and the document ID to test the filter expression<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7418 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv1-1-300x116.png\" alt=\"\" width=\"561\" height=\"217\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv1-1-300x116.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv1-1-1024x396.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv1-1-768x297.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv1-1-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv1-1.png 1049w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7419\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv2-1-300x133.png\" alt=\"\" width=\"557\" height=\"247\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv2-1-300x133.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv2-1-1024x456.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv2-1-768x342.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv2-1-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv2-1.png 1045w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Once you have a filter expression, you can test the expression by specifying the document ID in the above mentioned field. If the particular document matches the filter expression, you will be notified of the same. If not, you can use another document ID to validate. The purpose here is to provide a basic validation for your expression.If the expression is not a match, you will be notified of not matching. You can modify the filter or use a different document id to validate the filter.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7420\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv3-1-300x134.png\" alt=\"\" width=\"524\" height=\"234\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv3-1-300x134.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv3-1-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv3-1.png 512w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">If the expression matches the filter, you will be notified of the match which is a validation for the filter expression.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Editing filter expression<\/span><\/h4>\n<p><span style=\"font-weight: 400\">The filters can also be edited on the fly and the replication will continue without any pause\/resume.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7421\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv4-1-300x207.png\" alt=\"\" width=\"506\" height=\"349\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv4-1-300x207.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv4-1-1024x707.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv4-1-768x530.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv4-1-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv4-1.png 1059w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Once the filter is edited, the customers can choose to restart replication or continue to replicate without restart. Default is replication restart.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">XDCR, by default, will not flush any buckets when filters are modified. This step should be manually executed by the administrator if necessary.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">b. Deletion filtering<\/span><\/h3>\n<p><span style=\"font-weight: 400\">By design, XDCR replicates everything including deletes to maintain consistency. With advanced filtering in 6.5, we are providing the ability to replicate by filtering out deletes \/ documents with <a href=\"https:\/\/www.couchbase.com\/blog\/how-to-manage-ttl-with-couchbase-n1ql\/\">TTL<\/a> or to eliminate the TTLs and replication so that the destination docs will not have TTL. You can also choose to strip the TTL from the documents and replicate them.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7422\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/08\/adv5-1-300x161.png\" alt=\"\" width=\"626\" height=\"336\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv5-1-300x161.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv5-1-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/adv5-1.png 512w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/p>\n<p><span style=\"font-weight: 400\">This capability opens doors to new use cases using XDCR, as a hot and cold cluster where you would want to replicate only active documents or remove TTL and store it for archival purposes.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">If your version of Couchbase is less than 6.5, you will be able to filter only based on keys.<\/span><\/p>\n<p><span style=\"font-weight: 400\">If you are using 6.5 or above, you can filter based on keys, values, extended metadata, or a combination of all three.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">By replicating only what is necessary, customers can have better resource utilization in terms of bandwidth, storage and performance.<\/span><\/p>\n<h3>Resources<\/h3>\n<p class=\"p1\"><i>Download<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/couchbase.com\/downloads?family=server&amp;product=couchbase-server-developer\">Download Couchbase Server 6.5<\/a><\/span><\/p>\n<p class=\"p1\"><i>\u00a0<\/i><i>Documentation<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/release-notes\/relnotes.html\">Couchbase Server 6.5 Release Notes<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/introduction\/whats-new.html\">Couchbase Server 6.5 What\u2019s New<\/a><\/span><\/p>\n<p class=\"p1\"><i>Blogs<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-server-6-5-0-beta-whats-new-and-improved\/\">Blog: Announcing Couchbase Server 6.5 \u2013 What\u2019s New and Improved<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-brings-distributed-multi-document-acid-transactions-to-nosql\/\">Blog: Couchbase brings Distributed Multi-document ACID Transactions to NoSQL<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/tag\/6-5\/\"><b>All 6.5 Blogs<\/b><\/a><\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Customers use XDCR for various use cases from high availability to data locality to disaster recovery to cloud migration and hybrid cloud deployments. To meet these use cases, there are a number of circumstances where they would want to replicate [&hellip;]<\/p>\n","protected":false},"author":6588,"featured_media":11845,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1821,1816,9415,9417,1812],"tags":[1952,2127,2126],"ppma_author":[9064],"class_list":["post-7374","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-server","category-xdcr","category-performance","category-n1ql-query","tag-data-replication","tag-disaster-recovery","tag-high-availability"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Advanced Filtering with XDCR 6.5 - 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\/advanced-filtering-with-xdcr-6-5\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Advanced Filtering with XDCR 6.5\" \/>\n<meta property=\"og:description\" content=\"Customers use XDCR for various use cases from high availability to data locality to disaster recovery to cloud migration and hybrid cloud deployments. To meet these use cases, there are a number of circumstances where they would want to replicate [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-09T17:00:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:46:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1590\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\"},\"author\":{\"name\":\"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/852cd95d6c8aa5ea6d4128643cc3c2b6\"},\"headline\":\"Advanced Filtering with XDCR 6.5\",\"datePublished\":\"2019-08-09T17:00:32+00:00\",\"dateModified\":\"2025-06-14T03:46:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\"},\"wordCount\":594,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg\",\"keywords\":[\"Data Replication\",\"Disaster Recovery\",\"High Availability\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Server\",\"Cross Data Center Replication (XDCR)\",\"High Performance\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\",\"name\":\"Advanced Filtering with XDCR 6.5 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg\",\"datePublished\":\"2019-08-09T17:00:32+00:00\",\"dateModified\":\"2025-06-14T03:46:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg\",\"width\":1590,\"height\":628,\"caption\":\"Grafana plugin for Couchbase data sources\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Filtering with XDCR 6.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\/852cd95d6c8aa5ea6d4128643cc3c2b6\",\"name\":\"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/459272ec41e39279e1f7784a97a6b106\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3ce5e2ac49271390c080a82e055d92096b80f63a8f2ca4db5a52af1ace0b06f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3ce5e2ac49271390c080a82e055d92096b80f63a8f2ca4db5a52af1ace0b06f5?s=96&d=mm&r=g\",\"caption\":\"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.\"},\"description\":\"Chaitra Ramarao is a Senior Product Manager at Couchbase, NoSQL database company, leading databases tooling, cross datacenter replication and partner integrations. Her prior gigs include data analytics product management for Kaiser Permanente and software development for Hewlett Packard. She has a Bachelors degree in ECE and a Masters from Carnegie Mellon in Engineering &amp; Technology Innovation Management.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/chaitra\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Advanced Filtering with XDCR 6.5 - 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\/advanced-filtering-with-xdcr-6-5\/","og_locale":"en_US","og_type":"article","og_title":"Advanced Filtering with XDCR 6.5","og_description":"Customers use XDCR for various use cases from high availability to data locality to disaster recovery to cloud migration and hybrid cloud deployments. To meet these use cases, there are a number of circumstances where they would want to replicate [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-09T17:00:32+00:00","article_modified_time":"2025-06-14T03:46:21+00:00","og_image":[{"width":1590,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg","type":"image\/jpeg"}],"author":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/"},"author":{"name":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/852cd95d6c8aa5ea6d4128643cc3c2b6"},"headline":"Advanced Filtering with XDCR 6.5","datePublished":"2019-08-09T17:00:32+00:00","dateModified":"2025-06-14T03:46:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/"},"wordCount":594,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg","keywords":["Data Replication","Disaster Recovery","High Availability"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Architecture","Couchbase Server","Cross Data Center Replication (XDCR)","High Performance","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/","url":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/","name":"Advanced Filtering with XDCR 6.5 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg","datePublished":"2019-08-09T17:00:32+00:00","dateModified":"2025-06-14T03:46:21+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-xdcr.jpeg","width":1590,"height":628,"caption":"Grafana plugin for Couchbase data sources"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/advanced-filtering-with-xdcr-6-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Advanced Filtering with XDCR 6.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\/852cd95d6c8aa5ea6d4128643cc3c2b6","name":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/459272ec41e39279e1f7784a97a6b106","url":"https:\/\/secure.gravatar.com\/avatar\/3ce5e2ac49271390c080a82e055d92096b80f63a8f2ca4db5a52af1ace0b06f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ce5e2ac49271390c080a82e055d92096b80f63a8f2ca4db5a52af1ace0b06f5?s=96&d=mm&r=g","caption":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc."},"description":"Chaitra Ramarao is a Senior Product Manager at Couchbase, NoSQL database company, leading databases tooling, cross datacenter replication and partner integrations. Her prior gigs include data analytics product management for Kaiser Permanente and software development for Hewlett Packard. She has a Bachelors degree in ECE and a Masters from Carnegie Mellon in Engineering &amp; Technology Innovation Management.","url":"https:\/\/www.couchbase.com\/blog\/author\/chaitra\/"}]}},"authors":[{"term_id":9064,"user_id":6588,"is_guest":0,"slug":"chaitra","display_name":"Chaitra Ramarao, Sr. Product Manager, Couchbase Inc.","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3ce5e2ac49271390c080a82e055d92096b80f63a8f2ca4db5a52af1ace0b06f5?s=96&d=mm&r=g","author_category":"","last_name":"Ramarao, Sr. Product Manager, Couchbase Inc.","first_name":"Chaitra","job_title":"","user_url":"","description":"Chaitra Ramarao is a Senior Product Manager at Couchbase, NoSQL database company, leading databases tooling, cross datacenter replication and partner integrations. Her prior gigs include data analytics product management for Kaiser Permanente and software development for Hewlett Packard. She has a Bachelors degree in ECE and a Masters from Carnegie Mellon in Engineering &amp; Technology Innovation Management."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/7374","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\/6588"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=7374"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/7374\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/11845"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=7374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=7374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=7374"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=7374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}