ALIYUN::OTS::SearchIndex

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"
        ]
      }
    }
  }
}

更多示例,请参见创建表格存储实例、在数据表上创建一个多元索引、创建表和将表格存储实例绑定VPC的组合示例:YAML示例