5分钟入门Lindorm SearchIndex
简介:SearchIndex是Lindorm宽表的二级索引,主要用来帮助业务实现快速的检索分析。本篇文章介绍如何通过简单的SQL接口操作SearchIndex。
一、引言
云原生多模数据库Lindorm,支持海量数据的低成本存储和弹性按需付费,提供宽表、时序、文件等多种数据模型,兼容HBase、Cassandra、OpenTSDB等多种开源标准接口,是互联网、IoT、车联网、广告、社交、监控、游戏、风控等场景的首选数据库,也是为阿里巴巴核心业务提供关键支撑的数据库之一。关于Lindorm的更多介绍,可以参考 云原生多模数据库Lindorm。
Lindorm对外提供统一的标准SQL入口,可以让开发人员快速上手,轻松运维海量数据。SearchIndex是Lindorm宽表的二级索引,主要用来帮助业务实现快速的检索分析。本篇文章介绍如何通过简单的SQL接口操作SearchIndex。
二、SQL操作SearchIndex
开通全文索引
当您购买Lindorm宽表引擎后,可以在数据库实例控制台开通“全文索引”功能,如下图:
下载SQL工具
进入数据库实例控制台,在“数据库连接”中下载SQL工具:Lindorm-cli。同时,为了能够让本机可以访问集群,需要“开通外网地址”,并将本机ip加入到白名单中。

连接集群
将上一步下载的Lindorm-cli在本机解压后,直接执行如下命令:
./lindorm-cli -url jdbc:lindorm:table:url=http://ld-xxxx-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060 -username xxx -password xxx

其中的公网连接地址、用户名和密码可以在数据库控制台“数据库连接”中获取,参见上个章节中的截图。
备注:需要提前配置好白名单。
执行SQL语句
- 创建数据库
create schema testSchema;

- 创建表
use testSchema;
// 创建一个表,主键为id,非主键为name,age,address
create table if not exists testTable(id varchar, name varchar, age bigint, address varchar, constraint primary key (id));

- 创建SearchIndex
// 对表的非主键列建索引,其中address是一个分词字段,使用IK分词器
create search index if not exists testIdx on testTable(name,age,address(type=text,analyzer=ik)) with (indexState=ACTIVE);

- 写入测试数据
upsert into testTable(id,name,age,address) values ('1', '张三', 25, '北京市朝阳区绿地中心c座');
upsert into testTable(id,name,age,address) values ('2', '李四', 30, '上科路张江人工智能岛2号楼');
upsert into testTable(id,name,age,address) values ('3', '王五', 28, '深圳市南山区科苑南路3331号');
upsert into testTable(id,name,age,address) values ('4', '赵六', 36, '杭州市余杭区文一西路969号');

- 查询
select name from testtable where address = '朝阳区' limit 10;
select * from testtable where age > 30 and address = '杭州' limit 10;
select name from testtable where name = '王五' limit 10;

对于非主键的查询,一般会消耗非常多的系统资源,为了系统稳定,这样的查询默认会被拒绝掉。如果基于这些非主键创建了二级索引,则可以高效的执行。
更多SQL语法,可参考语法手册。
三、总结
SearchIndex是Lindorm宽表的二级索引,当您想加速检索分析的速度时,只需要对表创建索引即可,写入的数据会自动构建索引,查询时服务端会自动路由到索引,整个使用过程对业务代码0侵入。
SearchIndex在阿里内部以及公有云上有着丰富的应用场景,如果您在面对订单查询、物流轨迹、大数据画像、车联网等场景的业务架构设计,可以尝试将Lindorm SearchIndex应用到架构中,将会带来开发和存储成本的极大收益。
本文为阿里云原创内容,未经允许不得转载。
5分钟入门Lindorm SearchIndex的更多相关文章
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Objective-C 30分钟入门教程
Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...
- Apache Shiro系列三,概述 —— 10分钟入门
一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...
- JavaScript 10分钟入门
JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...
- 十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))
十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的 ...
- 30分钟入门Java8之方法引用
30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...
- 30分钟入门Java8之默认方法和静态接口方法
30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方 ...
- 【原创】30分钟入门 github
很久没更新了,这篇文章重点在github的入门使用,读者可以下载github for windows shell,边看边操作,加深印象. 好了,30分钟的愉快之旅开始吧: 一.github使用的注意事 ...
- 正则表达式30分钟入门教程<转载>
来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...
- kafka原理和实践(一)原理:10分钟入门
系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...
随机推荐
- C++ Qt开发:QUdpSocket网络通信组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QUd ...
- | [0/8] Installing jquery@3.x[npminstall:get] retry GET https://registry.npm.taobao.org/jwebdriver after 100ms, retry left 4, error: Error: certificate has expired ClientRequest.<anonymous>
昨天用开源项目UIRecorder初始化时报错,查看日志发现是淘宝的源证书过期,如下: PS E:\20231213\uirecorder\uirecorder_test> PS E:\2023 ...
- tableau 工作表分页
原创优阅达数据科技有限公司 https://mp.weixin.qq.com/s?__biz=MzA5MTU3NDI2NQ==&mid=2649465570&idx=1&sn= ...
- quartus之rom的IP测试
quartus之rom的IP测试 1.rom的作用 rom,就是只读存储器,内部数据在下载电路时就已经确认,不能使用信号驱动更改,只能够读取,一般用于比较重要的配置数据.在quartus中,可以直接调 ...
- SQLSERVER 的表分区(水平) 操作记录2
1 ----(非原创只是自己整理记录!!!)---------------原文地址: https://www.cnblogs.com/libingql/category/184251.h ...
- #单调栈,树状数组#CF1635F Closest Pair
题目 设 \(f(x,y)=|a_x-a_y|*(w_x+w_y)\),其中 \(a\) 单调递增 多组询问求 \(\min_{l\leq l'<r'\leq r}\{f(l',r')\}\) ...
- #Tarjan#洛谷 5676 [GZOI2017]小z玩游戏
题目 分析 可能玩两次也就是形成环即是Tarjan缩点后在同一个强连通分量 如果按照游戏连边数量将达到\(O(n^2)\),当中其实有很多边可以共用, 考虑\(i\)连向\(i\)的倍数,以及有趣程度 ...
- #主席树,离散,扫描线#洛谷 3168 [CQOI2015]任务查询系统
题目 分析 询问显然得预处理,考虑以优先级建权值线段树, 将优先级离散化处理,那么第\(k\)大可以用线段树来求 那任务怎么办,考虑时间用扫描线的方法,按照时间建新的线段树 把任务分成两部分,在两端差 ...
- mybatis复习(一)
原始连接数据库步骤: 1.导入JDBC驱动包 Class.forName("com.mysql.jdbc.Driver"); 2.获取连接对象(连接目标数据库) Connectio ...
- sqli_lab Less1练习笔记
首先观察页面信息,看有没有提示. 很显然,这个页面让我们传入id这个参数(根据题目的分支,应该是get方法) 使用HackBar进行传入参数,首先传入id=1 http://localhost/sql ...