本文主要为您介绍多元索引的接口、字段、查询以及计费。

SDK

您可以使用以下语言的SDK实现多元索引功能。

接口

名称 API 说明
创建 CreateSearchIndex 创建一个多元索引
描述 DescribeSearchIndex 获取多元索引详细描述信息
列表 ListSearchIndex 列出多元索引的列表
删除 DeleteSearchIndex 删除某个多元索引
查询 Search 查询接口

字段

表格存储多元索引的字段值来源于表中同名字段的值,两者的字段类型必须相匹配,匹配规则如下:

多元索引中字段类型 对应表中字段类型 描述
Long Integer 64位长整型
Double Double 64位长浮点数
Boolean Boolean bool值
Keyword String 不可分词字符串
Text String

可分词字符串或文本,详见分词.

Geopoint String 位置点坐标信息,格式:维度,经度,维度在前,经度在后,比如"35.8,-45.91"
Nested String 嵌套类型,比如"{["a": 1], ["a": 3]}"
注意 上述表中的类型,必须一一对应,否则数据会被当做脏数据丢弃,尤其是GeoPoint和Nested拥有各自特定的格式。如果格式不匹配也会被当做脏数据丢弃,会出现数据在表中查到,但是在多元索引中查询不到的情况。

多元索引字段除了类型外,还有一些附加属性:

属性 类型 名称 说明
Index Boolean 是否索引
  • 如果为true,则会对该列构建倒排索引或者空间索引。
  • 如果为false,则不会对该列构建索引。
  • 如果没索引,则不能按照该列进行查询。
EnableSortAndAgg Boolean 是否排序
  • 如果为true,则可以使用该列进行排序。
  • 如果为false,则不能使用该列排序。
Store Boolean 是否附加存储 如果为true,则会在索引中附加存储该列的原始值,查询时如果要读取该列的值,会优先从索引中直接读取,无须反查主表,使用后查询性能更优和更稳定。
IsArray Boolean 是否数组
  • 如果为true,则表示该列是一个数组,在写入时,也必须按照json数组格式写入,比如["a","b","c"]。
  • NESTED类型本身就是一个数组,所以无须设置Array。
  • Array类型不影响查询,所以Array类型的数据可以用于所有的Query查询。
说明 Array和Nested的区别详见Nested和Array对比
字段类型和字段属性相交情况如下:
类型 Index EnableSortAndAgg Store Array
Long 支持 支持 支持 支持
Double 支持 支持 支持 支持
Boolean 支持 支持 支持 支持
keyword 支持 支持 支持 支持
Text 支持 不支持 支持 支持
Geopoint 支持 支持 支持 支持
Nested 只对子字段设置 只对子字段设置 只对子字段设置 Nested本身就是数组

查询

查询时需要指定一个SearchRequest,参数如下:
参数 类型 描述
offset Integer 本次查询的开始位置。
limit Integer 本次查询需要返回的最大数量。
getTotalCount Boolean 是否返回匹配的总行数,默认关闭,加上后会影响查询性能。
Sort Sort 指定排序的字段和方式。
collapse Collapse,唯一的参数是设置字段名。 返回结果中按照哪个字段折叠。
query Query 具体的Query类型,完整的query列表如下表:
名称 Query 说明
匹配所有行 MatchAllQuery 常用于查询表中数据总行数。
匹配查询 MatchQuery 会先对query内容做分词,然后查询分词后的结构,不同分词直接的关系是OR。
短语匹配查询 MatchPhraseQuery 类似于MatchQuery,但是分词后的多个词必须在文档中相邻才算匹配。
精确查询 TermQuery 不分词,精确查找query的内容,一般用于字符串完全匹配。
多词精确查询 TermsQuery 类似于TermQuery,但是可以一次指定多个值,类似于SQL中的in
前缀查询 PrefixQuery 查询query中的值为前缀的数据。
范围查询 RangeQuery 范围查询。
通配符查询 WildcardQuery 通配符查询,类似于SQL中的like。
复合条件组合查询 BoolQuery 多个条件组合查询,组合关系支持And、Or、Not等。
地理边界框查询 GeoBoundingBoxQuery 根据一个矩形范围的地理位置边界条件查询表中的数据,当一个地理位置点落在给出的矩形范围内时,满足查询条件。
地理距离查询 GeoDistanceQuery 根据一个中心点和距离条件查询表中的数据,当一个地理位置点到指定的中心点的距离不超过指定的值时,满足查询条件。
地理多边形查询 GeoPolygonQuery 根据一个多边形范围条件查询表中的数据,当一个地理位置点落在指定的多边形内时,满足查询条件。

计费

具体参见计量项和计费说明