Set GSI Settings

  • reference
    +
    To set the global secondary index settings use POST /settings/indexes.

    Description

    This endpoint is used to update the global secondary index settings for the cluster. The request is handled and validated by the cluster manager and then delegated to all relevant index nodes automatically. All changes to the index settings via this method apply to all index nodes in the cluster. Parameters which are not specified are left unchanged, it is not necessary to specify all parameters in the body.

    HTTP Method and URI

    POST http://<host>:8091/settings/indexes

    Body Parameters

    All of the following parameters are passed in the request body as application/x-www-form-urlencoded data. The parameters are specified as key-value pairs (e.g key=value).

    Optional

    Name Description Type

    enableShardAffinity

    Selects the index rebalance method:

    • false (default value): Index Service nodes rebuild indexes that are newly assigned to them during a rebalance.

    • true: Couchbase Server moves a reassigned index’s files between Index Service nodes.

    In Couchbase Server versions 7.6.0 and 7.6.1, when you enabled file-based rebalance you could not choose which Index Service nodes would contain an index when using the CREATE INDEX statement. In Couchbase Server 7.6.2 and later, you can use the WITH <node> clause to set which node contains the index. You still cannot use the WITH <node> clause with ALTER INDEX after you enable file-based rebalance.

    boolean

    indexerThreads

    Number of threads for the indexer process to use, this applies equally to all index nodes in the cluster regardless of the number of cores on each node. A value of 0 causes the indexer process to use one thread per CPU core on each individual node.

    integer

    logLevel

    Indexer logging level.

    Possible values are:

    • silent

    • fatal

    • error

    • warn

    • info

    • verbose

    • timing

    • debug

    • trace

    maxRollbackPoints

    Maximum number of committed rollback points.

    integer

    memorySnapshotInterval

    In-memory snapshotting interval in milliseconds.

    integer

    numReplica

    The default number of index replicas to be created by the Index Service whenever CREATE INDEX is invoked. For further details, refer to Index Replication.

    integer

    redistributeIndexes

    When true, Couchbase Server redistributes indexes when rebalance occurs, in order to optimize performance. If false (the default), such redistribution does not occur. For further details, refer to Rebalancing the Index Service.

    boolean

    stableSnapshotInterval

    Persisted snapshotting interval in milliseconds.

    integer

    enablePageBloomFilter

    Whether Bloom filters are enabled for memory management. The default is that they are disabled. See Per Page Bloom Filters.

    boolean

    storageMode

    The storage mode to be used for all global secondary indexes in the cluster.


    In the Enterprise Edition of Couchbase Server, the options are plasma and memory_optimized. A value of plasma sets the cluster-wide index storage mode to use the Plasma storage engine, which can utilize both memory and persistent storage for index maintenance and index scans. A value of memory_optimized sets the cluster-wide index storage mode to use memory optimized global secondary indexes which can perform index maintenance and index scan faster at in-memory speeds.

    This setting can only be changed while there are no index nodes in the cluster. To change from standard GSI to memory optimized GSI or vice versa, you need to remove all the index service nodes in the cluster.


    If you are using the Community Edition, the default (and only) value is forestdb.

    Possible values are:

    • plasma

    • memory_optimized

    • forestdb

    Response Codes

    Response Code Description

    200

    Success. Settings are updated and the new settings are returned in the response.

    401

    Unauthorized.

    Sample Curl Command

    The following example sets the global secondary index settings.

    # tag::gsi-settings[]
    curl -v -X POST http://127.0.0.1:8091/settings/indexes \
    -u Administrator:password \
    -d indexerThreads=4 \
    -d logLevel=verbose \
    -d maxRollbackPoints=2 \
    -d storageMode=plasma \
    -d redistributeIndexes=false \
    -d numReplica=0 \
    -d enablePageBloomFilter=false
    # end::gsi-settings[]
    
    # tag::disable-ftb-rebalance[]
    curl -X POST http://<host>:8091/settings/indexes -d enableShardAffinity=false -u Administrator:<password>
    # end::disable-ftb-rebalance[]

    Sample Response

    200
    {
      "redistributeIndexes": false,
      "numReplica": 0,
      "enablePageBloomFilter": false,
      "enableShardAffinity": false,
      "indexerThreads": 4,
      "memorySnapshotInterval": 200,
      "stableSnapshotInterval": 5000,
      "maxRollbackPoints": 2,
      "logLevel": "verbose",
      "storageMode": "plasma"
    }
    401

    This response code returns an empty body.

    Curl Command to Disable the File Transfer Based Rebalance

    The following command disables the File Transfer Based Rebalance (enableShardAffinity) feature in the Index Storage Mode.

    curl -X POST http://<host>:8091/settings/indexes -d enableShardAffinity=false -u Administrator:<password>