使用CreateSearchIndex接口在数据表上创建一个多元索引。一个数据表可以创建多个多元索引。
前提条件
- 已初始化Client。具体操作,请参见初始化。
- 已创建数据表,且数据表的数据生命周期(timeToLive)必须为-1,最大版本数(maxVersions)必须为1。
参数
创建多元索引时,需要指定数据表名称(tableName)、多元索引名称(indexName)和索引的结构信息(schema),其中schema包含fieldSchemas(Index的所有字段的设置)、indexSetting(索引设置)和indexSort(索引预排序设置)。详细参数说明请参见下表。
参数 | 说明 |
---|---|
tableName | 数据表名称。 |
indexName | 多元索引名称。 |
fieldSchemas | fieldSchemas的列表,每个fieldSchema包含如下内容:
|
indexSetting | 索引设置,包含routingFields设置。 routingFields(可选):自定义路由字段。可以选择部分主键列作为路由字段,在进行索引数据写入时,会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。 |
indexSort | 索引预排序设置,包含sorters设置。如果不设置,则默认按照主键排序。
说明 含有Nested类型的索引不支持indexSort,没有预排序。
sorters(必选):索引的预排序方式,支持按照主键排序和字段值排序。关于排序的更多信息,请参见
排序和翻页。
|
示例
/**
*创建一个多元索引,包含Col_Keyword、Col_Long、Col_Text、Col_Nested四列。
*类型分别设置为字符串(Keyword)、整型(Long)、分词字符串(Text)以及嵌套文本(Nested)。
*/
client.createSearchIndex({
tableName: TABLE_NAME, //设置数据表名称。
indexName: INDEX_NAME, //设置多元索引名称。
schema: {
fieldSchemas: [
{
fieldName: "Col_Keyword",
fieldType: TableStore.FieldType.KEYWORD, //设置字段名和字段类型。
index: true, //设置开启索引。
enableSortAndAgg: true, //设置开启排序与统计聚合功能。
store: false,
isAnArray: false
},
{
fieldName: "Col_Long",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: true,
store: true,
isAnArray: false
},
{
fieldName: "Col_Text",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
store: true,
isAnArray: false,
analyzer: "single_word"
},
// {
// fieldName: "Col_Nested",
// fieldType: TableStore.FieldType.NESTED,
// index: false,
// enableSortAndAgg: false,
// store: false,
// fieldSchemas: [ //嵌套字段中设置子字段索引。
// {
// fieldName: "Sub_Col_KeyWord",
// fieldType: TableStore.FieldType.KEYWORD,
// index: true,
// enableSortAndAgg: true,
// store: false
// },
// {
// fieldName: "Sub_Col_Long",
// fieldType: TableStore.FieldType.LONG,
// index: true,
// enableSortAndAgg: true,
// store: false
// }
// ]
// }
],
indexSetting: { //索引的配置选项。
"routingFields": ["Pk_Keyword"], //只支持将主键列设置为routingFields。
"routingPartitionSize": null
},
indexSort: {//含有Nested类型的索引不支持indexSort,没有预排序。
sorters: [
// { //不设置indexSort时,默认为PrimaryKeySort(升序)排序。
// primaryKeySort: {
// order: TableStore.SortOrder.SORT_ORDER_ASC
// }
// },
{
fieldSort: {
fieldName: "Col_Keyword",
order: TableStore.SortOrder.SORT_ORDER_DESC //设置indexSort排序的顺序。
}
}
]
},
timeToLive: 1000000, //单位为秒。
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});