创建索引¶
可以使用一个或多个字段创建集合索引。用于创建这些索引的方法是mysqlx.Collection.create_index ()
下面几节描述函数所需的参数和一些使用示例。
理由mysqlx.Collection.create_index ()
¶
使用mysqlx.Collection.create_index ()
我们需要指定要创建的索引的名称和作为索引一部分的成员,此外,对于每个成员,我们需要指定文档中保存字段的数据类型,以及是否需要。标记为required的字段必须出现在集合中的每个文档中。
{“字段”:[{“字段”:member_path,#需要str“类型”:member_type,# required str,必须是有效类型“要求”:member_required,# optional, True或(默认)False“排序”:排序,#可选str仅用于文本字段类型“选项”:选项,# optional (int)仅适用于GEOJSON字段类型“srid”:srid},# optional (int)仅适用于GEOJSON字段类型#{…更多的成员,#重复了很多次根据需要#}],“类型”:类型}#可选,空间或(默认)索引
的有效类型类型
领域是:
INT(无符号)
非常小的整数(无符号)
短整型(无符号)
MEDIUMINT(无符号)
整型(无符号)
长整型数字(无符号)
真正的(无符号)
浮动(无符号)
双(无符号)
小数(无符号)
数字(无符号)
日期
时间
时间戳
DATETIME
文本((长度))
GEOJSON(额外选项:options, srid)
注:使用类型
GEOJSON需要索引类型
被设置为空间
.
使用mysqlx.Collection.create_index ()
¶
首先,我们需要获得一个会话和一个模式。
进口mysqlx#连接服务器会话=mysqlx.get_session({“主机”:“localhost”,“端口”:33060,“用户”:“迈克”,“密码”:“s3cr3t !”})模式=会话.get_schema(“测试”)
下一步是创建一个示例集合。
在模式中创建“collection_GOT模式.create_collection(“collection_GOT”)#从模式中获取collection_GOT集合=模式.get_collection(“collection_GOT”)
下面的示例演示如何创建带有name的简单索引index_age
它将使用一个字段年龄
将保存整数值的文档。
集合.create_index(“index_age”,{“字段”:[{“字段”:“年龄”,“类型”:“INT”}),“类型”:“指数”})
下面的示例演示如何创建带name的多字段索引index_name
它将使用字段family_name
而且的名字
来自将保存小文本的文档。这一次,要求
成员已设置为真正的
,这意味着该集合中的所有文档都需要这些字段。
集合.create_index(“index_name”,{“字段”:[{“字段”:“family_name”,“类型”:“文本”(12),“要求”:真正的}),“字段”:[{“字段”:“名称”,“类型”:“文本”(12),“要求”:真正的}),“类型”:“指数”})
下面的示例演示如何创建带name的多字段索引geojson_name
,它将使用带有GEOJSON数据的字段,因此将需要索引类型
被设置为空间
,它将使用这些字段.geoField美元
,.intField美元
,.floatField美元
而且.dateField美元
.每个字段包含文件名称的复合数据。注意,通过设置空间
到索引类型
我们将需要为每个成员设置要求
来真正的
,这意味着该集合中的所有文档都需要这些字段。
集合.create_index(“index_age”,{“字段”:[{“字段”:“.geoField美元”,“类型”:“GEOJSON”,“要求”:假,“选项”:2,“srid”:4326},{“字段”:“.intField美元”,“类型”:“INT”,“要求”:真正的},{“字段”:“.floatField美元”,“类型”:“浮动”,“要求”:真正的},{“字段”:“.dateField美元”,“类型”:“日期”,“要求”:真正的}),“类型”:“空间”})