全部產品
Search
文件中心

:ALIYUN::OTS::SearchIndex

更新時間:Jun 19, 2024

ALIYUN::OTS::SearchIndex類型用於在資料表上建立一個多元索引。一個資料表可以建立多個多元索引。

文法

{
  "Type": "ALIYUN::OTS::SearchIndex",
  "Properties": {
    "IndexName": String,
    "InstanceName": String,
    "TableName": String,
    "FieldSchemas": List,
    "IndexSort": Map,
    "IndexSetting": Map
  }
}

屬性

屬性名稱

類型

必須

允許更新

描述

約束

IndexName

String

多元索引名稱。

InstanceName

String

資料表所屬的執行個體名稱。

TableName

String

資料表名稱。

FieldSchemas

List

欄位結構。

IndexSort

Map

索引預排序設定。預設按照主鍵排序。

含有Nested類型的索引不支援IndexSort,沒有預排序。

更多資訊,請參見IndexSort屬性

IndexSetting

Map

索引設定。

更多資訊,請參見IndexSetting屬性

IndexSort文法

"IndexSort": {
  "Sorters": List
}

IndexSort屬性

屬性名稱

類型

必須

允許更新

描述

約束

Sorters

List

索引的預排序方式。

支援按照主鍵排序和欄位值排序。

更多資訊,請參見排序和翻頁Sorters屬性

Sorters文法

"Sorters": [
  {
    "FieldSort": Map,
    "PrimaryKeySort": Map,
    "ScoreSort": Map,
    "GeoDistanceSort": Map
  }
]

Sorters屬性

屬性名稱

類型

必須

允許更新

描述

約束

FieldSort

Map

按照欄位值排序。

更多資訊,請參見FieldSort屬性

PrimaryKeySort

Map

按照主鍵排序。

更多資訊,請參見PrimaryKeySort屬性

ScoreSort

Map

按照查詢結果的相關性(BM25演算法)分數進行排序,適用於有相關性的情境,例如:全文檢索索引等。

如果需要按照相關性打分進行排序,必須手動設定ScoreSort,否則會按照索引設定的IndexSort進行排序。

更多資訊,請參見ScoreSort屬性

GeoDistanceSort

Map

根據地理位置距離進行排序。

更多資訊,請參見GeoDistanceSort屬性

FieldSort文法

"FieldSort": {
  "SortMode": String,
  "SortOrder": String,
  "FieldName": String
}

FieldSort屬性

屬性名稱

類型

必須

允許更新

描述

約束

SortMode

String

當欄位存在多個值時的排序方式。

SortOrder

String

排序的順序。

取值:

  • 升序(預設值):ASC。

  • 降序:DESC。

FieldName

String

排序的欄位名。

PrimaryKeySort文法

"PrimaryKeySort": {
  "SortOrder": String
}

PrimaryKeySort屬性

屬性名稱

類型

必須

允許更新

描述

約束

SortOrder

String

排序的順序。

取值:

  • 升序(預設值):ASC。

  • 降序:DESC。

ScoreSort文法

"ScoreSort": {
  "SortOrder": String
}

ScoreSort屬性

屬性名稱

類型

必須

允許更新

描述

約束

SortOrder

String

排序次序。

取值:

  • 升序(預設值):ASC。

  • 降序:DESC。

GeoDistanceSort文法

"GeoDistanceSort": {
  "Points": List,
  "SortMode": String,
  "SortOrder": String,
  "FieldName": String
}

GeoDistanceSort屬性

屬性名稱

類型

必須

允許更新

描述

約束

Points

List

組成多邊形範圍的座標,通過多個座標可以確定一個唯一的多邊形。

格式為緯度,經度,緯度在前,經度在後,且緯度範圍為[-90,+90],經度範圍[-180,+180]。例如:35.8,-45.91

SortMode

String

當欄位存在多個值時的排序方式。

SortOrder

String

排序次序。

取值:

  • 升序(預設值):ASC。

  • 降序:DESC。

FieldName

String

排序的欄位名。

IndexSetting文法

"IndexSetting": {
  "RoutingFields": List
}

IndexSetting屬性

屬性名稱

類型

必須

允許更新

描述

約束

RoutingFields

List

自訂路由欄位。

您可以選擇部分主鍵列作為路由欄位,在進行索引資料寫入時,會根據路由欄位的值計算索引資料的分布位置,路由欄位的值相同的記錄會被索引到相同的資料分區中。

FieldSchemas文法

"FieldSchemas": [
  {
    "Index": Boolean,
    "IsArray": Boolean,
    "Analyzer": String,
    "EnableSortAndAgg": Boolean,
    "Store": Boolean,
    "SubFieldSchemas": List,
    "FieldName": String,
    "FieldType": String
  }
]

FieldSchemas屬性

屬性名稱

類型

必須

允許更新

描述

約束

Index

Boolean

是否開啟索引。

取值:

  • true:開啟索引。

  • false:不開啟索引。

IsArray

Boolean

是否為數組。

取值:

  • true:是數組。

  • false:不是數組。

Analyzer

String

分詞器類型。

當欄位類型為Text時,可以設定此參數;否則,則預設分詞器類型為單字分詞。

更多資訊,請參見分詞

EnableSortAndAgg

Boolean

是否開啟排序與統計彙總功能。

取值:

  • true:開啟排序與統計彙總功能。

  • false:關閉排序與統計彙總功能。

Store

Boolean

是否在多元索引中附加儲存該欄位的值。

取值:

  • true:附加儲存該欄位的值。

  • false:不附加儲存該欄位的值。

開啟後,可以直接從多元索引中讀取該欄位的值,而不必反查資料表,可用於查詢效能最佳化。

SubFieldSchemas

List

當欄位類型為Nested類型時,需要通過此參數設定嵌套文檔中子列的索引類型。

FieldName

String

建立多元索引的欄位名,即列名。

多元索引中的欄位可以是主鍵列或者屬性列。

FieldType

String

欄位類型。

使用FieldType.XXX 來設定欄位類型。

取值:

  • FieldType.LONG

  • FieldType.DOUBLE

  • FieldType.BOOLEAN

  • FieldType.KEYWORD

  • FieldType.GEOPOINT

  • FieldType.NESTED

更多資訊,請參見資料類型映射

SubFieldSchemas文法

"SubFieldSchemas": [
  {
    "Index": Boolean,
    "IsArray": Boolean,
    "Analyzer": String,
    "EnableSortAndAgg": Boolean,
    "Store": Boolean,
    "FieldName": String,
    "FieldType": String
  }
]

SubFieldSchemas屬性

屬性名稱

類型

必須

允許更新

描述

約束

Index

Boolean

是否開啟索引。

取值:

  • true:開啟索引。

  • false:關閉索引。

IsArray

Boolean

是否為數組。

取值:

  • true:是數組。

  • false:不是數組。

Analyzer

String

分詞器類型。

當欄位類型為Text時,可以設定此參數;否則,則預設分詞器類型為單字分詞。

更多資訊,請參見分詞

EnableSortAndAgg

Boolean

是否開啟排序與統計彙總功能。

取值:

  • true:開啟排序與統計彙總功能。

  • false:關閉排序與統計彙總功能。

Store

Boolean

是否在多元索引中附加儲存該欄位的值。

取值:

  • true:附加儲存該欄位的值。

  • false:不附加儲存該欄位的值。

開啟後,可以直接從多元索引中讀取該欄位的值,而不必反查資料表,可用於查詢效能最佳化。

FieldName

String

建立多元索引的欄位名,即列名。

多元索引中的欄位可以是主鍵列或者屬性列。

FieldType

String

欄位類型。

取值為FieldType.XXX。

更多資訊,請參見資料類型映射

傳回值

Fn::GetAtt

IndexName:多元索引名稱。

樣本

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  InstanceName:
    Type: String
    Description: The name of the OTS instance in which table will locate.
    AllowedPattern: '[a-zA-Z][-a-zA-Z0-9]{1,14}[a-zA-Z0-9]'
    Default: mytest
  TableName:
    Type: String
    Description: The table name of the OTS instance.
    AllowedPattern: '[_a-zA-Z][_a-zA-Z0-9]{0,254}'
    Default: mytest
  SearchIndexName:
    Type: String
    Description: The index name.
    Default: searchIndex
  FieldSchemas:
    Type: Json
    Default:
      - FieldName: id
        FieldType: FieldType.LONG
        IsArray: false
        Index: true
        EnableSortAndAgg: true
        Store: true
Resources:
  SearchIndex:
    Type: ALIYUN::OTS::SearchIndex
    Properties:
      IndexName:
        Ref: SearchIndexName
      InstanceName:
        Ref: InstanceName
      TableName:
        Ref: TableName
      FieldSchemas:
        Ref: FieldSchemas
Outputs:
  IndexName:
    Value:
      Fn::GetAtt:
        - SearchIndex
        - IndexName

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "InstanceName": {
      "Type": "String",
      "Description": "The name of the OTS instance in which table will locate.",
      "AllowedPattern": "[a-zA-Z][-a-zA-Z0-9]{1,14}[a-zA-Z0-9]",
      "Default": "mytest"
    },
    "TableName": {
      "Type": "String",
      "Description": "The table name of the OTS instance.",
      "AllowedPattern": "[_a-zA-Z][_a-zA-Z0-9]{0,254}",
      "Default": "mytest"
    },
    "SearchIndexName": {
      "Type": "String",
      "Description": "The index name.",
      "Default": "searchIndex"
    },
    "FieldSchemas": {
      "Type": "Json",
      "Default": [
        {
          "FieldName": "id",
          "FieldType": "FieldType.LONG",
          "IsArray": false,
          "Index": true,
          "EnableSortAndAgg": true,
          "Store": true
        }
      ]
    }
  },
  "Resources": {
    "SearchIndex": {
      "Type": "ALIYUN::OTS::SearchIndex",
      "Properties": {
        "IndexName": {
          "Ref": "SearchIndexName"
        },
        "InstanceName": {
          "Ref": "InstanceName"
        },
        "TableName": {
          "Ref": "TableName"
        },
        "FieldSchemas": {
          "Ref": "FieldSchemas"
        }
      }
    }
  },
  "Outputs": {
    "IndexName": {
      "Value": {
        "Fn::GetAtt": [
          "SearchIndex",
          "IndexName"
        ]
      }
    }
  }
}

更多樣本,請參見建立Table Store執行個體、在資料表上建立一個多元索引、建立表和將Table Store執行個體綁定VPC的組合樣本:YAML樣本