Configure an Autocomplete Search Index
- Capella Operational
- how-to
Create a Search index with the Capella UI or import a JSON Search index payload to start using autocomplete with the Search Service.
Prerequisites
-
You have the Search Service enabled on a node in your cluster. For more information about how to change Services on your cluster, see Modify a Paid Cluster.
-
You have a bucket with scopes and collections in your cluster. For more information, see Manage Buckets.
-
You have logged in to the Couchbase Capella UI.
Procedure
You can create a compatible Search index with the Capella UI in Advanced Mode or import a JSON payload.
Create an Autocomplete Search Index Manually with the Capella UI
To create the Search index in the Capella UI with Advanced Mode:
-
On the Operational Clusters page, select the cluster where you want to create the Search index.
-
Go to
. -
Click Create Search Index.
-
Click the Advanced Mode toggle.
-
In the Index Name field, enter a name for the Search index.
Your index name must start with an alphabetic character (a-z or A-Z). It can only contain alphanumeric characters (a-z, A-Z, or 0-9), hyphens (-), or underscores (_).
For Couchbase Server version 7.6 and later, your index name must be unique inside your selected bucket and scope. You cannot have 2 indexes with the same name inside the same bucket and scope.
-
Under Advanced Settings, expand Analyzers.
-
Create a Custom Analyzer with the following settings:
-
In the Name field, enter
keyword_to_lower
. -
In the Tokenizer list, select single.
-
In the Token Filters list, select and add the to_lower token filter.
-
-
Under Advanced Settings, expand Custom Filters.
-
Create a custom token filter with the following settings:
-
In the Name field, enter
edge_ngram_2_8
. -
In the Type list, select edge_ngram.
-
In the Min box, enter
2
, or the minimum number of characters you want the Search index to use for autocomplete. -
In the Max box, enter
8
, or the maximum number of characters you want the Search index to use for autocomplete.
-
-
Create another custom analyzer with the following settings:
-
In the Name field, enter
edge_ngram
. -
In the Tokenizer list, select unicode.
-
In the Token Filters list, click both the to_lower and your custom edge_ngram_2_8 token filter.
-
-
Under Type Mappings, in the Bucket list, select the bucket where you want to create your Search index.
-
In the Scope list, select the scope where you want to create the index.
-
In the Filter by collection or field field, enter the name of the collection you want to search from your Search index.
-
When the collection appears, click the collection name.
-
Clear Index everything from collection: "$COLLECTION_NAME".
-
Click Add.
-
-
In the Filter by collection or field field, enter the name of a field in your collection’s document schema that contains the data you want to search.
-
Configure the field:
-
In the Analyzer/Language list, select your edge_ngram analyzer.
-
Select Index this field.
-
Select Store field values.
-
Select Include in _all field.
-
-
Expand General Settings.
-
In the Default Analyzer list, select your keyword_to_lower analyzer.
-
Click Create Index.
Import a Search Index Payload
-
Import a Search Index Definition with the Capella UI with the following JSON payload, replacing all placeholder values that start with a
$
:{ "type": "fulltext-index", "name": "$INDEX_NAME", "sourceType": "gocbcore", "sourceName": "$BUCKET_NAME", "planParams": { "maxPartitionsPerPIndex": 1024, "indexPartitions": 1 }, "params": { "doc_config": { "docid_prefix_delim": "", "docid_regexp": "", "mode": "scope.collection.type_field", "type_field": "type" }, "mapping": { "analysis": { "analyzers": { "edge_ngram": { "token_filters": [ "to_lower", "edge_ngram_2_8" ], "tokenizer": "unicode", "type": "custom" }, "keyword_to_lower": { "token_filters": [ "to_lower" ], "tokenizer": "single", "type": "custom" } }, "token_filters": { "edge_ngram_2_8": { "back": false, "max": 8, "min": 2, "type": "edge_ngram" } } }, "default_analyzer": "keyword_to_lower", "default_datetime_parser": "dateTimeOptional", "default_field": "_all", "default_mapping": { "dynamic": true, "enabled": false }, "default_type": "_default", "docvalues_dynamic": false, "index_dynamic": true, "store_dynamic": false, "type_field": "_type", "types": { "$SCOPE_NAME.$COLLECTION_NAME": { "dynamic": false, "enabled": true, "properties": { "$FIELD_NAME": { "dynamic": false, "enabled": true, "fields": [ { "analyzer": "edge_ngram", "include_in_all": true, "index": true, "name": "$FIELD_NAME", "store": true, "type": "text" } ] } } } } }, "store": { "indexType": "scorch", "segmentVersion": 15 } }, "sourceParams": {} }
Next Steps
To add an autocomplete feature to your application, see Add Autocomplete to Your Application for example code.