{"id":9831,"date":"2021-09-24T00:00:30","date_gmt":"2021-09-24T07:00:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9831"},"modified":"2025-06-13T20:59:00","modified_gmt":"2025-06-14T03:59:00","slug":"web-console-for-full-text-indexes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/","title":{"rendered":"How to Build Indexes for Full-Text Search in Couchbase 7.0"},"content":{"rendered":"<p><strong>Indexes are the underlying<\/strong> infrastructure that make full-text search possible.<\/p>\n<p>The new Scopes and Collections feature in Couchbase Server 7.0 makes full-text search in your applications more powerful than ever before. Powering those searches requires full-text indexes.<\/p>\n<p>This article provides an overview of Scopes and Collections in <a href=\"https:\/\/developer.couchbase.com\/new-to-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> and walks you through creating a full-text index via the new Couchbase Quick Editor. We&#8217;ll also look at changes to the Standard Editor to accommodate Scopes and Collections.<\/p>\n<h2>What Is Full-Text Search?<\/h2>\n<p>Full-Text Search (FTS) refers to techniques for searching text within a document or a collection of documents. Couchbase supports indexing and searching text from various languages and provides <a href=\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/?ref=blog\" target=\"_blank\" rel=\"noopener\">customizable text analyzers<\/a> to interpret text in various ways via tokenizers, filters, etc.<\/p>\n<p>The Collections paradigm within a Couchbase bucket lets users define indexes that can subscribe to multiple Scopes and Collections. But what, exactly, are Scopes and Collections?<\/p>\n<h2>What Are Scopes &amp; Collections?<\/h2>\n<p>A Couchbase bucket \u2013 the document-based, partitioned, distributed database \u2013 is the core of <a href=\"https:\/\/www.couchbase.com\/products\/server\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Couchbase Server<\/a>. With <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-0-release\/?ref=blog\" target=\"_blank\" rel=\"noopener\">the 7.0 release<\/a>, you can categorize documents by configuring buckets to form an organizational hierarchy. Each category is held within a sub-bucket (that is also partitioned); that sub-bucket is a <em>Collection<\/em>. Each bucket is now managed via a three-layer hierarchy, as you can see in the image below.<\/p>\n<p>Here&#8217;s a sample bucket and it&#8217;s categorization with Scopes and Collections for a restaurant menu. (For more context of the relationship between Scopes and Collections, read this <a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/data\/scopes-and-collections.html?ref=blog\" target=\"_blank\" rel=\"noopener\">primer on understanding Scopes and Collections<\/a>.)<\/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\/2020\/11\/restaurant_menu.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9838\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/restaurant_menu.png\" alt=\"Restaurant menu to illustrate Scopes and Collections in Couchbase 7.0\" width=\"735\" height=\"324\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/restaurant_menu.png 735w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/restaurant_menu-300x132.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/restaurant_menu-20x9.png 20w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>For this bucket hierarchy, you can define a full-text search index to subscribe to and index data such as:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>The contents of all the vegetarian tacos within the <em>food<\/em> Scope of the menu<\/li>\n<li>The meats used in all the burgers within the <em>food<\/em> Scope of the menu<\/li>\n<li>The types of cocktails and coffee drinks within the <em>drink<\/em> Scope of the menu<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>You get the idea.<\/p>\n<p><em>Note:<\/em> You can define a full-text index to subscribe to several Collections, but all those Collections must belong to a single Scope. <strong>An index definition cannot transcend a Scope.<\/strong><\/p>\n<h2>Let&#8217;s Talk Index Definitions<\/h2>\n<p>The screenshot below shows how to add an index in the standard Couchbase editor (as it looked in Couchbase Server 6.6).<\/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\/2020\/11\/index_preview_6.6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9835\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/index_preview_6.6.png\" alt=\"Couchbase full-text search index in version 6.6\" width=\"1260\" height=\"834\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/index_preview_6.6.png 1260w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/index_preview_6.6-300x199.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/index_preview_6.6-1024x678.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/index_preview_6.6-768x508.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/index_preview_6.6-20x13.png 20w\" sizes=\"auto, (max-width: 1260px) 100vw, 1260px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>In the screenshot above, I intend to index all the content in the JSON documents from the bucket `beer-sample` that has a field `type` whose value is `beer`. Note the Index Definition Preview on the right side of the screen, which carries all the settings for the index `beers`. This preview adapts immediately to any changes we make to the settings.<\/p>\n<p>As you can see, there are a lot of settings in the index definition. And <a href=\"https:\/\/www.couchbase.com\/products\/server\/whats-new?ref=blog\" target=\"_blank\" rel=\"noopener\">Couchbase Server 7.0<\/a> includes even more variations to support Collections, which may make it daunting \u2013 particularly for new users.<\/p>\n<p>That&#8217;s why we&#8217;ve introduced the Quick Editor for defining indexes. With it, new users (or anyone who doesn&#8217;t want to delve into advanced settings for their full-text search indexes) can get started with Couchbase&#8217;s Search Service. Before we dive into the Quick Editor in detail, let&#8217;s look at how 7.0 has updated the definition of a full-text index to accommodate Collections. Feel free to <a href=\"#quick-editor-intro\">jump directly to the discussion of the Quick Editor<\/a> if you&#8217;d prefer.<\/p>\n<h3>How Couchbase Server 7.0 Updates Full-Text Index Definitions<\/h3>\n<p>Let&#8217;s quickly go over updates to the definition of a full-text index in Couchbase 7.0 to accommodate Scopes and Collections. Note that Couchbase will continue to support older index definitions from legacy versions of Couchbase Server.<\/p>\n<p>Let&#8217;s continue with the example I used earlier: the `beers` index on the Couchbase bucket `beer-sample`. Stripping off the default settings and holding on to only the relevant settings, here&#8217;s a minimal index definition for it:<\/p>\n<pre>{\r\n  \"type\": \"fulltext-index\",\r\n  \"name\": \"beers\",\r\n  \"sourceType\": \"couchbase\",\r\n  \"sourceName\": \"beer-sample\",\r\n  \"params\": {\r\n    \"doc_config\": {\r\n      \"mode\": \"type_field\",\r\n      \"type_field\": \"type\"\r\n    },\r\n    \"mapping\": {\r\n      \"types\": {\r\n        \"beer\": {\r\n          \"dynamic\": true,\r\n          \"enabled\": true\r\n        }\r\n      }\r\n    },\r\n    \"store\": {\r\n      \"indexType\": \"scorch\"\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>In 7.0 terms, all that content in the bucket `beers-sample` resides within the `_default` Collection of the `_default` Scope \u2013 meaning that when you upgrade Couchbase to 7.0, the data in your bucket moves into the `_default` Collection within the `_default` Scope.<\/p>\n<p>The above index definition works with 7.0. Here&#8217;s an alternative, though: a 7.0 index definition that does the exact same thing as the one above.<\/p>\n<pre>{\r\n  \"type\": \"fulltext-index\",\r\n  \"name\": \"beers\",\r\n  \"sourceType\": \"gocbcore\",\r\n  \"sourceName\": \"beer-sample\",\r\n  \"params\": {\r\n    \"doc_config\": {\r\n      \"mode\": \"scope.collection.type_field\",\r\n      \"type_field\": \"type\"\r\n    },\r\n    \"mapping\": {\r\n      \"types\": {\r\n        \"_default._default.beer\": {\r\n          \"dynamic\": true,\r\n          \"enabled\": true\r\n        }\r\n      }\r\n    },\r\n    \"store\": {\r\n      \"indexType\": \"scorch\"\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Note the three differences between the two definitions above:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>`sourceType` has changed from <a href=\"https:\/\/www.github.com\/couchbase\/go-couchbase\" target=\"_blank\" rel=\"noopener\">couchbase<\/a> to <a href=\"https:\/\/www.github.com\/couchbase\/gocbcore\" target=\"_blank\" rel=\"noopener\">gocbcore<\/a>. We&#8217;ve changed the underlying SDK that the full-text index uses to communicate with a Couchbase bucket to a newer, better-supported one.<\/li>\n<li>`params.doc_config.mode` has changed from `type_field` to `scope.collection.type_field`, indicating that the type mapping names now follow that format.<\/li>\n<li>The <strong>type mapping name<\/strong> has now become `_default._default.beer`, indicating that it indexes documents of `type`:`beer` from within the `_default` Collection in the `_default` Scope of the bucket `beer-sample`.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h4>Collections Help You Model Your Data Better<\/h4>\n<p>Modeling your data into a single Collection (mimicking pre-7.0 behavior) means that all the data within the bucket is shipped and the index must filter out documents based on the definition.<\/p>\n<p>With Scopes and Collections, you can model your data into categories \u2013 each of which resides in a separate Collection. I&#8217;ll highlight one obvious advantage with this approach in the following example.<\/p>\n<p>The `beer-sample` bucket holds documents of type `beer` and `brewery` all residing within the `_default` Collection of the `_default` Scope. Let&#8217;s change this model:<\/p>\n<ol>\n<li>Set up a Scope `content` within `beer-sample`.<\/li>\n<li>Within the Scope, set up two Collections: `beers` and `breweries`.<\/li>\n<li>Load data of `type`:`beer` into `beers` and data of `type`:`brewery` into `breweries`.<\/li>\n<\/ol>\n<p>Here&#8217;s an index definition to hold the same data as the earlier ones: ..<\/p>\n<pre>{\r\n  \"type\": \"fulltext-index\",\r\n  \"name\": \"beers\",\r\n  \"sourceType\": \"gocbcore\",\r\n  \"sourceName\": \"beer-sample\",\r\n  \"params\": {\r\n    \"doc_config\": {\r\n      \"mode\": \"scope.collection.type_field\",\r\n      \"type_field\": \"type\"\r\n    },\r\n    \"mapping\": {\r\n      \"types\": {\r\n        \"content.beers\": {\r\n          \"dynamic\": true,\r\n          \"enabled\": true\r\n        }\r\n      }\r\n    },\r\n    \"store\": {\r\n      \"indexType\": \"scorch\"\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>This time around the bucket ships documents of only `type`:`beer`. So with the latest index definition, your search nodes would:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Consume less network bandwidth<\/li>\n<li>Benefit from faster index build times<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Check out this <a href=\"https:\/\/www.couchbase.com\/blog\/searching-collections-with-full-text-search\/?ref=blog\" target=\"_blank\" rel=\"noopener\">companion blog post for more detail on the nuances of full-text index definitions<\/a> with Couchbase bucket Collections.<\/p>\n<h2 id=\"quick-editor-intro\">Introducing the Quick Editor<\/h2>\n<p>Here&#8217;s a peek at the new Quick Editor:<\/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\/2020\/11\/quick_index.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9841\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/quick_index.png\" alt=\"Quick Index Editor in Couchbase Server\" width=\"1454\" height=\"490\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index.png 1454w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index-300x101.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index-1024x345.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index-768x259.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/quick_index-1320x445.png 1320w\" sizes=\"auto, (max-width: 1454px) 100vw, 1454px\" \/><\/a><\/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\/2020\/11\/introducing_quick.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9842\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/introducing_quick.png\" alt=\"Introducing the Quick Editor in Couchbase Server 7.0\" width=\"2846\" height=\"1120\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick.png 2846w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-300x118.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-1024x403.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-768x302.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-1536x604.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-2048x806.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/introducing_quick-1320x519.png 1320w\" sizes=\"auto, (max-width: 2846px) 100vw, 2846px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>When you select a bucket, Scope and Collection in the Keyspace fields shown in the screenshot, a sample document appears in the Select Fields section; it belongs to the `bucket.scope.collection` selected. A refresh button in the top-right corner of the Select Fields section lets you iterate through documents (at random) within the Collection.<\/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\/2020\/11\/sample_doc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9843\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/sample_doc.png\" alt=\"A sample JSON document in Couchbase\" width=\"2846\" height=\"1120\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc.png 2846w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-300x118.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-1024x403.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-768x302.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-1536x604.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-2048x806.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/sample_doc-1320x519.png 1320w\" sizes=\"auto, (max-width: 2846px) 100vw, 2846px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Now you can select a field from the document (by clicking on the field name\/value). The selected field shows up for configuration within the Configure Fields section. The type of the field is detected automatically (currently only <em>text<\/em>, <em>number<\/em> and <em>Boolean<\/em> are recognized). If the field were <em>datetime<\/em> (string in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601\" target=\"_blank\" rel=\"noopener\">ISO-8601<\/a> format) or a <em>geopoint<\/em> (an object, an array or a geohash), you&#8217;d need to explicitly select the type from the Type drop-down.<\/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\/2020\/11\/configure_field.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9844\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/configure_field.png\" alt=\"Configure field in Couchbase index editor\" width=\"2844\" height=\"1132\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field.png 2844w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-300x119.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-1024x408.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-768x306.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-1536x611.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-2048x815.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/configure_field-1320x525.png 1320w\" sizes=\"auto, (max-width: 2844px) 100vw, 2844px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>When the configured field is `Add`-ed, it shows up in the Mapped Fields section, as you can see below. You can edit a mapped field anytime by selecting it again from the Select Fields section or in the Mapped Fields section.<\/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\/2020\/11\/mapped_field.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9845\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/mapped_field.png\" alt=\"Mapped field in Couchbase index editor\" width=\"2844\" height=\"1538\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field.png 2844w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-300x162.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-1024x554.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-768x415.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-1536x831.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-2048x1108.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/mapped_field-1320x714.png 1320w\" sizes=\"auto, (max-width: 2844px) 100vw, 2844px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>The Create Index button at the bottom of the page lets you create the index.<\/p>\n<p>Here are the available settings for configuring a field:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>Type<\/strong> is the type of the field value. Supported types are text, number, Boolean, geopoint and datetime, as detailed above.<\/li>\n<li><strong>Index this field as an identifier<\/strong> appears only if the chosen field type is <em>text<\/em>. If selected, this will enforce the keyword analyzer for the text.<\/li>\n<li>The <strong>Language<\/strong> drop-down is available if the field type is <em>text<\/em> and the field isn&#8217;t indexed as an identifier. In the Language drop-down you can choose the analyzer for the text field.<\/li>\n<li>The next four check boxes essentially translate to a single option or a combination of options (as in the Standard Editor) supported for a field:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\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\/2020\/11\/options_table-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9855\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/options_table-1.png\" alt=\"Options table in Couchbase Server 7.0 full-text index editor\" width=\"754\" height=\"202\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/options_table-1.png 754w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/options_table-1-300x80.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/options_table-1-20x5.png 20w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>You can <a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-creating-index-from-UI.html?ref=blog\" target=\"_blank\" rel=\"noopener\">find more documentation on these options here<\/a>.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>The last section is for setting <strong>Searchable As<\/strong>, which takes a text input that serves as the alias for the field. This setting is optional and defaults to the name of the selected field. During search, the entry in this section is the field to look in.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>You can edit an index set up from within the Quick Editor anytime using either the Quick Editor or the Standard Editor.<\/p>\n<h3>Limited Options in the Quick Editor<\/h3>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>As noted earlier, for simplicity the Quick Editor provides limited options to configure index definitions.<\/li>\n<li>You can&#8217;t index a field that isn&#8217;t available in the sample document loaded in the Select Fields section.<\/li>\n<li>Custom analyzers are not supported.<\/li>\n<li><em>Geopoint<\/em> and <em>Datetime<\/em> fields are not recognized automatically. You can, however, explicitly set field type upon selection.<\/li>\n<li>You can&#8217;t use the Quick Editor to edit an index created using the Standard Editor. However, you can use the Standard Editor to edit an index created with the Quick Editor.<\/li>\n<li>While you can set up fields from within multiple Collections, you cannot index the same field multiple times within a single Collection.<\/li>\n<li>The Quick Editor does not support filtering of documents within a `scope.collection` (to just index documents of a certain type).<\/li>\n<li>You cannot set index replicas, index type or index partitions within the Quick Editor. They will assume default values when you create an index. However, you can change these settings using the Standard Editor and subsequently edit the index definition using the Quick Editor as long as the `params.mapping` and `params.doc_config` sections of the index definition aren&#8217;t altered within the Standard Editor*.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>*<em>This behavior may change as we extend support within the Quick Editor.<\/em><\/p>\n<h2>Changes to the Standard Editor<\/h2>\n<p>The first thing you may notice that&#8217;s different is a new check box under the Index Name and Bucket entries, asking if you&#8217;d like to set up the index to subscribe to a non-default Scope or non-default Collection(s):<\/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\/2020\/11\/add_index.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9848\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/add_index.png\" alt=\"Add a full-text search index in Couchbase Server\" width=\"1445\" height=\"598\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index.png 1445w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index-300x124.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index-1024x424.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index-768x318.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/add_index-1320x546.png 1320w\" sizes=\"auto, (max-width: 1445px) 100vw, 1445px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Enabling the check box prefixes `scope.collection` to the `params.doc_config.mode` within the index definition, implying that the index can subscribe to one or more Collections from within a Scope. This `scope.collection` prefix works in combination with the existing settings `type_field`, `docid_prefix` and `docid_regexp` for filtering documents to index.<\/p>\n<p>If you check the <strong>Use non-default scope\/collection(s)<\/strong> box, a drop-down appears. There you can select a Scope from the available Scopes for the bucket you&#8217;ve chosen:<\/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\/2020\/11\/select_scope.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9849\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/select_scope.png\" alt=\"Select a Scope in Couchbase full-text index editor\" width=\"1448\" height=\"652\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope.png 1448w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope-300x135.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope-1024x461.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope-768x346.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_scope-1320x594.png 1320w\" sizes=\"auto, (max-width: 1448px) 100vw, 1448px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Now within the type mappings, you&#8217;ll be asked to select a Collection from a drop-down. (Note that the default type mapping must be un-checked if you choose a non-default Scope selection, because an index definition cannot transcend a Scope.)<\/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\/2020\/11\/select_collection.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9850\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/select_collection.png\" alt=\"How to select a Collection in Couchbase Web Console\" width=\"1447\" height=\"707\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection.png 1447w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection-300x147.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection-1024x500.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection-768x375.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/select_collection-1320x645.png 1320w\" sizes=\"auto, (max-width: 1447px) 100vw, 1447px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Once you select a Collection, you have the option of appending a type name to the `&lt;scope&gt;.&lt;collection&gt;` based on the Type Identifier you&#8217;ve selected for filtering out documents to index from within the Collection. You can edit this type mapping anytime. And just as before, you can add sub-mappings and child fields within the type mapping.<\/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\/2020\/11\/edit_type_mapping.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9851\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/edit_type_mapping.png\" alt=\"Edit a document type mapping for a Couchbase full-text index\" width=\"1450\" height=\"850\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping.png 1450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping-300x176.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping-1024x600.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping-768x450.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/edit_type_mapping-1320x774.png 1320w\" sizes=\"auto, (max-width: 1450px) 100vw, 1450px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>The rest of the functionality within the Standard Editor remains unchanged.<\/p>\n<h2>Searching a Collection-Aware Full-Text Index<\/h2>\n<p>The UI for searching within a full-text search index has not changed. The text box supports only a query string. See <a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-type-mappings.html?ref=blog\" target=\"_blank\" rel=\"noopener\">this documentation page on other types of queries the full-text index supports<\/a>.<\/p>\n<p>Search requests going directly to the endpoint now take a new argument (optional) to only fetch results from a Collection or a set of Collections that the full-text index subscribes to.<\/p>\n<p>Here&#8217;s a sample search request:<\/p>\n<pre>curl -XPOST -H \"Content-type:application\/json\" -u username:password https:\/\/IP:8094\/api\/index\/index_name\/query -d '{\r\n  \"query\": {..},\r\n  \"limit\": 10,\r\n  \"offset\": 0,\r\n  \"ctl\": {..},\r\n  \"collections\": [\"collection1\", \"collection2\"]\r\n}'\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>On <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-ui\/manage-ui.html?ref=blog\" target=\"_blank\" rel=\"noopener\">the Couchbase Web Console<\/a>, however, you can&#8217;t set the `collections` argument for a search request; the request will span across the indexed content of <em>all<\/em> Collections the index subscribes to.<\/p>\n<p>Let&#8217;s consider a sample index definition set up using the Quick Editor. This index subscribes to Collections `beer` and `brewery` within the Scope `content` of the bucket `default`. Within these two Collections, the name fields are indexed with the following options set:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Include in search result(s)<\/li>\n<li>Support highlighting<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Here&#8217;s the relevant content from the index definition:<\/p>\n<pre>{\r\n  \u2026\r\n  \"name\": \"default\",\r\n  \"sourceName\": \"default\",\r\n  \"params\": {\r\n    \"mapping\": {\r\n      \"types\": {\r\n        \"content.beer\": {\r\n          \"dynamic\": false,\r\n          \"enabled\": true,\r\n          \"properties\": {\r\n            \"name\": {\r\n              \"dynamic\": false,\r\n              \"enabled\": true,\r\n              \"fields\": [\r\n                {\r\n                  \"analyzer\": \"en\",\r\n                  \"include_in_all\": true,\r\n                  \"include_term_vectors\": true,\r\n                  \"store\": true,\r\n                  \"index\": true,\r\n                  \"name\": \"name\",\r\n                  \"type\": \"text\"\r\n                }\r\n              ]\r\n            }\r\n          }\r\n        },\r\n        \"content.brewery\": {\r\n          \"dynamic\": false,\r\n          \"enabled\": true,\r\n          \"properties\": {\r\n            \"name\": {\r\n              \"dynamic\": false,\r\n              \"enabled\": true,\r\n              \"fields\": [\r\n                {\r\n                  \"analyzer\": \"en\",\r\n                  \"include_in_all\": true,\r\n                  \"include_term_vectors\": true,\r\n                  \"store\": true,\r\n                  \"index\": true,\r\n                  \"name\": \"name\",\r\n                  \"type\": \"text\"\r\n                }\r\n              ]\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>In cases where the index definition subscribes to more than one Collection (like in the example above) for a search, the Collection that the document belongs to appears as a stored field with the key `_$c`.<\/p>\n<p>Here&#8217;s a sample search-results snippet for the above full-text search index definition:<\/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\/2020\/11\/search_results.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9852\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/search_results.png\" alt=\"Full-text search results in Couchbase Web Console\" width=\"1423\" height=\"488\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results.png 1423w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results-300x103.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results-1024x351.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results-768x263.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/search_results-1320x453.png 1320w\" sizes=\"auto, (max-width: 1423px) 100vw, 1423px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Learn More about Couchbase 7.0<\/h2>\n<p>Ready to delve deeper into Couchbase 7.0 and all its features? Check out these resources:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\u200b\u200b<a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-scopes-and-collections\/manage-scopes-and-collections.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Manage Scopes and Collections<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener\">What&#8217;s new in version 7.0<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/release-notes\/relnotes.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Couchbase 7.0 release notes<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/how-to-migrate-to-scopes-and-collections-in-couchbase-7-0\/?ref=blog\" target=\"_blank\" rel=\"noopener\">How to Migrate to Scopes &amp; Collections in Couchbase 7.0<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog&quot;\" target=\"_blank\" rel=\"noopener\">How Scopes &amp; Collections Simplify Multi-Tenant App Deployments on Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/?ref=blog\" target=\"_blank\" rel=\"noopener\">5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 30px\" aria-hidden=\"true\"><\/div>\n<div style=\"text-align: center\"><strong>Ready to try out Scopes and Collections for yourself?&lt;br\/ &gt;<a href=\"https:\/\/www.couchbase.com\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Download Couchbase Server 7.0 today<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Indexes are the underlying infrastructure that make full-text search possible. The new Scopes and Collections feature in Couchbase Server 7.0 makes full-text search in your applications more powerful than ever before. Powering those searches requires full-text indexes. This article provides [&hellip;]<\/p>\n","protected":false},"author":37266,"featured_media":12109,"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,9336,9936,1812,2201],"tags":[1798,2311,1261],"ppma_author":[8925],"class_list":["post-9831","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-scopes-and-collections","category-search","category-n1ql-query","category-tools-sdks","tag-couchbase-web-console","tag-distributed-database","tag-json"],"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>Full-Text Search in Couchbase 7.0: How to Build Indexes<\/title>\n<meta name=\"description\" content=\"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.\" \/>\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\/web-console-for-full-text-indexes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Build Indexes for Full-Text Search in Couchbase 7.0\" \/>\n<meta property=\"og:description\" content=\"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-24T07:00:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:59:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0-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=\"Abhinav Dangeti, Software Engineer\" \/>\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\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0-social.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abhinav Dangeti, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\"},\"author\":{\"name\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/574480df99d76a8837bba934d7324711\"},\"headline\":\"How to Build Indexes for Full-Text Search in Couchbase 7.0\",\"datePublished\":\"2021-09-24T07:00:30+00:00\",\"dateModified\":\"2025-06-14T03:59:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\"},\"wordCount\":2122,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg\",\"keywords\":[\"Couchbase Web Console\",\"distributed database\",\"JSON\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Full-Text Search\",\"Indexing\",\"Scopes and Collections\",\"Search\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\",\"name\":\"Full-Text Search in Couchbase 7.0: How to Build Indexes\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg\",\"datePublished\":\"2021-09-24T07:00:30+00:00\",\"dateModified\":\"2025-06-14T03:59:00+00:00\",\"description\":\"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Learn how to create full-text search indexes for Couchbase Server 7.0 using Scopes and Collections\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Build Indexes for Full-Text Search in Couchbase 7.0\"}]},{\"@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\/574480df99d76a8837bba934d7324711\",\"name\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9fa9293925a63fb1fab65e43636c534b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g\",\"caption\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\"},\"description\":\"Work on Couchbase's Distributed Full Text Search\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/abhinav\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Full-Text Search in Couchbase 7.0: How to Build Indexes","description":"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.","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\/web-console-for-full-text-indexes\/","og_locale":"en_US","og_type":"article","og_title":"How to Build Indexes for Full-Text Search in Couchbase 7.0","og_description":"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.","og_url":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-09-24T07:00:30+00:00","article_modified_time":"2025-06-14T03:59:00+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0-social.jpg","type":"image\/jpeg"}],"author":"Abhinav Dangeti, Software Engineer","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0-social.jpg","twitter_misc":{"Written by":"Abhinav Dangeti, Software Engineer","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/"},"author":{"name":"Abhinav Dangeti, Software Engineering, Couchbase inc.","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/574480df99d76a8837bba934d7324711"},"headline":"How to Build Indexes for Full-Text Search in Couchbase 7.0","datePublished":"2021-09-24T07:00:30+00:00","dateModified":"2025-06-14T03:59:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/"},"wordCount":2122,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg","keywords":["Couchbase Web Console","distributed database","JSON"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Full-Text Search","Indexing","Scopes and Collections","Search","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/","url":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/","name":"Full-Text Search in Couchbase 7.0: How to Build Indexes","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg","datePublished":"2021-09-24T07:00:30+00:00","dateModified":"2025-06-14T03:59:00+00:00","description":"This post provides an overview on how to build indexes in Couchbase and walk through creating a full-text index via the new Couchbase Quick Editor.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/how-to-create-full-text-search-indexes-couchbase-server-7-0.jpg","width":1200,"height":628,"caption":"Learn how to create full-text search indexes for Couchbase Server 7.0 using Scopes and Collections"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/web-console-for-full-text-indexes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Build Indexes for Full-Text Search in Couchbase 7.0"}]},{"@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\/574480df99d76a8837bba934d7324711","name":"Abhinav Dangeti, Software Engineering, Couchbase inc.","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9fa9293925a63fb1fab65e43636c534b","url":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","caption":"Abhinav Dangeti, Software Engineering, Couchbase inc."},"description":"Work on Couchbase's Distributed Full Text Search","url":"https:\/\/www.couchbase.com\/blog\/author\/abhinav\/"}]}},"authors":[{"term_id":8925,"user_id":37266,"is_guest":0,"slug":"abhinav","display_name":"Abhinav Dangeti, Software Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","author_category":"","last_name":"Dangeti, Software Engineer","first_name":"Abhinav","job_title":"","user_url":"","description":"Work on Couchbase's Distributed Full Text Search"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9831","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\/37266"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=9831"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/12109"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=9831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=9831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=9831"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=9831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}