多元索引

更新时间: 2023-06-25 14:14:11

为数据表创建多元索引后,您可以通过Tablestore CLI查看多元索引列表、查看多元索引信息、使用多元索引查询数据以及删除多元索引。

创建多元索引

创建一个多元索引。

  • 命令格式

    create_search_index -n search_index_name

    配置项说明请参见下表。

    配置项

    是否必填

    示例值

    说明

    -i,--input

    /tmp/indexschema.json

    通过JSON格式的文件配置多元索引Schema。

    -n,--name

    search_index

    多元索引名称。

    -t,--table

    mytable

    数据表名称。

    --ttl

    -1

    数据生命周期(TTL),即数据的保存时间。当数据的保存时间超过设置的数据生命周期时,系统会自动清理超过数据生命周期的数据。默认值为-1。

    数据生命周期至少为86400秒(一天)或-1(数据永不过期)。

    重要

    使用多元索引生命周期管理功能,必须禁用数据表的UpdateRow更新写入功能。多元索引的TTL和数据表的TTL是独立的,多元索引的TTL值必须小于或等于数据表的TTL值。更多信息,请参见生命周期管理

  • 示例

    创建search_index多元索引。

    create_search_index -n search_index

    根据系统提示输入索引Schema,示例如下:

     {
    
        "IndexSetting": {
            "RoutingFields": null
        },
        "FieldSchemas": [
            {
                "FieldName": "gid",
                "FieldType": "LONG",
                "Index": true,
                "EnableSortAndAgg": true,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": false
            },
            {
                "FieldName": "uid",
                "FieldType": "LONG",
                "Index": true,
                "EnableSortAndAgg": true,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": false
            },
            {
                "FieldName": "col2",
                "FieldType": "LONG",
                "Index": true,
                "EnableSortAndAgg": true,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": false
            },
            {
                "FieldName": "col3",
                "FieldType": "TEXT",
                "Index": true,
                "Analyzer": "single_word",
                "AnalyzerParameter": {
                    "CaseSensitive": true,
                    "DelimitWord": null
                },
                "EnableSortAndAgg": false,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": false
            },
            {
                "FieldName": "col1",
                "FieldType": "KEYWORD",
                "Index": true,
                "EnableSortAndAgg": true,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": false
            },
            {
                "FieldName": "col3V",
                "FieldType": "LONG",
                "Index": true,
                "EnableSortAndAgg": true,
                "Store": true,
                "IsArray": false,
                "IsVirtualField": true,
                "SourceFieldNames": [
                    "col3"
                ]
            }
        ]
    }

    多元索引Schema配置项说明请参见下表。

    配置项

    是否必填

    说明

    IndexSetting

    索引设置,包含RoutingFields设置。

    RoutingFields(可选):自定义路由字段。可以选择部分主键列作为路由字段,在进行索引数据写入时,会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。

    FieldSchemas

    FieldSchema的列表,每个FieldSchema包含如下内容:

    • FieldName(必选):创建多元索引的字段名,即列名,类型为String。

      多元索引中的字段可以是主键列或者属性列。

    • FieldType(必选):字段类型。更多信息,请参见数据类型映射

    • IsArray(可选):是否为数组,类型为Boolean。

      如果设置为true,则表示该列是一个数组,在写入时,必须按照JSON数组格式写入,例如["a","b","c"]

      由于Nested类型是一个数组,当FieldType为Nested类型时,无需设置此参数。

    • Index(可选):是否开启索引,类型为Boolean。

      默认为true,表示对该列构建倒排索引或者空间索引;如果设置为false,则不会对该列构建索引。

    • Analyzer(可选):分词器类型。当字段类型为Text时,可以设置此参数;如果不设置,则默认分词器类型为单字分词。关于分词的更多信息,请参见分词

    • AnalyzerParameter:使用单字分词时,配置分词参数,包含CaseSensitive和DelimitWord设置。

      • CaseSensitive:是否大小写敏感。默认是false,此时所有英文字母会转换为小写。如果不需要系统自动将英文字母转换为小写字母,需要保持大小写敏感,请设置CaseSensitive为true。

      • DelimitWord:对于英文和数字连接在一起的单词是否分割英文和数字。默认是false,此时英文和数字连接在一起不会拆分。如果需要将数字和英文拆分开,请设置DelimitWord参数为true。

    • EnableSortAndAgg(可选):是否开启排序与统计聚合功能,类型为Boolean。

      只有EnableSortAndAgg设置为true的字段才能进行排序。关于排序的更多信息,请参见排序和翻页

      重要

      Nested类型的字段不支持开启排序与统计聚合功能,但是Nested类型内部的子列支持开启排序与统计聚合功能。

    • Store(可选):是否在多元索引中附加存储该字段的值,类型为Boolean。

      开启后,可以直接从多元索引中读取该字段的值,而不必反查数据表,可用于查询性能优化。

    • IsVirtualField(可选):该列是否为虚拟列,类型为Boolean类型,默认值为false。只有使用虚拟列时,才需要设置此参数。关于虚拟列的更多信息,请参见虚拟列

    • SourceFieldNames(可选):数据表中的字段名称,类型为String。当设置IsVirtualField为true时,必须设置此参数。

    IndexSort

    索引预排序设置,包含Sorters设置。如果不设置,则默认按照主键排序。

    重要

    含有Nested类型的索引不支持IndexSort,没有预排序。

    Sorters(可选):索引的预排序方式,包含Name和Sorter设置。支持按照主键排序和字段值排序。更多信息,请参见排序和翻页

    • Name:排序方式,取值范围如下:

      • PrimaryKeySort表示按照主键排序。

      • FieldSort表示按照字段值排序。

        只有建立索引且开启排序与统计聚合功能的字段才能进行预排序。

    • Sorter:包含如下设置:

      当排序方式为主键排序时只需要Order。当排序方式为字段名排序时需要设置FieldName和Order。

      • FieldName:排序的字段名。

      • Order:排序的顺序,可按升序(ASC)或者降序(DESC)排序,默认为ASC。

查看多元索引列表

查看当前数据表下多元索引的列表。

  • 命令格式

    list_search_index

    配置项说明请参见下表。

    配置项

    是否必填

    示例值

    说明

    -a,--all

    不涉及

    显示所有表的多元索引列表。

    -d,--detail

    不涉及

    显示多元索引的详细信息。

    -t,--table

    mytable

    数据表名称。

  • 示例

    查看当前表下的多元索引列表。

    list_search_index

    返回结果如下:

    +-----------+--------------+
    | TableName | IndexName    |
    +-----------+--------------+
    | mytable   | search_index |
    +-----------+--------------+

查看多元索引信息

查看多元索引的信息。

  • 命令格式

    describe_search_index -n search_index_name

    配置项说明请参见下表。

    配置项

    是否必填

    示例值

    说明

    -n,--name

    search_index

    多元索引名称。

    -o,--output

    /tmp/describeinfo.json

    输出查询结果到本地JSON格式文件或TXT格式文件中。

    -t,--table

    mytable

    数据表名称。

  • 示例

    查看search_index多元索引的信息。

    describe_search_index -n search_index

    返回结果中的Index schema为多元索引的Schema,TimeToLive为多元索引的数据生命周期。

使用多元索引查询数据

使用多元索引查询满足指定条件的数据以及对数据进行统计聚合操作。

  • 命令格式

    search -n search_index_name --return_all_indexed

    配置项说明请参见下表。

    配置项

    是否必填

    示例值

    说明

    -c,--column

    col1,col2

    要返回的列。多个列之间用半角逗号(,)分隔。

    -n,--name

    search_index

    多元索引名称。

    -f,--print_format

    table

    输出结果的打印格式,默认值为table。

    --return_all

    不涉及

    返回所有列。

    --return_all_indexed

    不涉及

    返回所有多元索引中建立索引的列。

    -t,--table

    mytable

    数据表名称。

  • 示例

    使用search_index多元索引查询表中数据,并返回所有建立索引的列。

    search -n search_index --return_all_indexed

    根据系统提示输入查询条件,示例如下:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "BoolQuery",
            "Query": {
                "MinimumShouldMatch": null,
                "MustQueries": null,
                "MustNotQueries": null,
                "FilterQueries": null,
                "ShouldQueries": [{
                    "Name": "RangeQuery",
                    "Query": {
                        "FieldName": "gid",
                        "From": null,
                        "To": 10,
                        "IncludeLower": false,
                        "IncludeUpper": false
                    }
                }, {
                    "Name": "TermQuery",
                    "Query": {
                        "FieldName": "gid",
                        "Term": "77"
                    }
                }]
            }
        },
        "Aggregations": [{
            "Name": "avg",
            "Aggregation": {
                "AggName": "agg1",
                "Field": "gid",
                "MissingValue": null
            }
        }]
    }

    配置项说明请参见下表。

    参数

    是否必填

    说明

    Offset

    本次查询的开始位置。

    Limit

    本次查询需要返回的最大数量。

    如果要随机获取几行数据,请设置limit为正整数。

    如果只为了获取行数,无需具体数据,可以设置limit=0,即不返回任意一行数据。

    Collapse

    折叠参数配置,可以按照某一列对结果集做折叠,使对应类型的数据在结果展示中只出现一次,保证结果展示中类型的多样性。更多信息,请参见折叠(去重)

    FieldName:列名,按该列对结果集做折叠,只支持应用于整型、浮点数和Keyword类型的列,不支持数组类型的列。

    Sort

    返回结果的排序方式。更多信息,请参见查询时指定排序方式

    如果查询数据未设置排序方式,则查询结果会按照预排序方式返回;如果创建多元索引时未设置预排序,则查询结果会按照主键排序返回。

    GetTotalCount

    是否返回匹配的总行数,默认为false,表示不返回。

    返回匹配的总行数会影响查询性能。如果要返回匹配的总行数,请设置GetTotalCount为true。

    Token

    当符合查询条件的数据未读取完时,服务端会返回Token值,此时可以使用Token继续读取后面的数据。首次读取数据时,Token值需要设置为null。

    Query

    查询类型。多元索引支持全匹配查询(MatchAllQuery)、匹配查询(MatchQuery)、短语匹配查询(MatchPhraseQuery)、精确查询(TermQuery)、多词精确查询(TermsQuery)、前缀查询(PrefixQuery)等多种查询方式,请根据实际设置。更多信息,请参见使用SDK查询数据

    Aggregations

    统计聚合功能配置,可以实现求最小值、求最大值、求和、求平均值、统计行数、去重统计行数等功能。更多信息,请参见统计聚合

    • Name:统计聚合功能类型,例如min、max、sum、avg、count等。

    • Aggregation:统计聚合参数配置。包含如下配置:

      • AggName:自定义的统计聚合名称,用于区分不同的统计聚合。

      • Field:用于统计聚合的字段。

      • MissingValue:当某行数据中的字段为空时,字段值的默认值。如果未设置MissingValue值,则在统计聚合时会忽略该行;如果设置了MissingValue值,则使用MissingValue值作为字段值的默认值参与统计聚合。

删除多元索引

删除不需要的多元索引。

  • 命令格式

    drop_search_index -n search_index_name -y

    配置项说明请参见下表。

    配置项

    是否必填

    示例值

    说明

    -n,--name

    search_index

    多元索引名称。

    -t,--table

    mytable

    数据表名称。

    -y,--yes

    不涉及

    显示确认信息。命令中必须带有此配置项。

  • 示例

    删除search_index多元索引。

    drop_search_index -n search_index -y
阿里云首页 表格存储 相关技术圈