搜索索引使用限制

云原生多模数据库 Lindorm的搜索索引(SearchIndex)服务在使用过程中存在一些限制,本文介绍搜索索引的使用限制。

搜索索引(SearchIndex)服务在使用过程中存在以下限制:

  • 数据类型

    索引列支持的数据类型包括:BOOLEAN,BYTE,SHORT,INT,LONG,FLOAT,DOUBLE,STRING,CHAR,BINARY,TIMESTAMP,JSON。

    重要

    宽表引擎仅2.6.5及以上版本支持JSON和TIMESTAMP数据类型。如何查看和升级当前版本,请参见宽表引擎版本说明升级小版本

  • 生存时间(Time-To-Live,简称TTL)

    搜索索引的TTL默认与主表保持一致,索引会定期清理历史数据,无法保证TTL的实时生效。

    重要

    搜索引擎Elasticsearch兼容版本暂不支持TTL。

  • 数据多版本

    搜索索引不支持索引列数据的多版本。

  • 自定义时间戳

    默认情况下,Lindorm服务端会为每行数据生成一个毫秒时间戳,相当于数据版本。如果在写数据时自定义时间戳,那么服务端会以应用端的时间戳为准。不同客户端自定义时间戳的方法如下:

    • HBase客户端按照下面的接口实现自定义时间戳。

      public Put(byte[] row, long ts)
      public Put addColumn(byte[] family, byte[] qualifier, long ts, byte[] value)
    • Lindorm SQL客户端按照下面的接口实现自定义时间戳。

      UPSERT INTO testTable (pk,c1,c2,_l_ts_) values('1','2','3',1640966400000);

    如果Lindorm宽表创建了搜索索引,在自定义时间戳写入的场景中,需要提前修改表属性。修改语句如下:

    • 通过HBase Shell修改表属性。

      ALTER 'testTable', MUTABILITY=> 'MUTABLE_ALL'
    • 通过Lindorm SQL修改表属性。

      ALTER TABLE testTable SET 'MUTABILITY' = 'MUTABLE_ALL';
    说明

    MUTABILITY属性的默认值为MUTABLE_LATEST,有关Mutability分类的说明请参见基本概念

如果您在使用过程中遇到任何问题,请提交工单处理,工单链接为提交工单