本文介绍如何在多种查询场景下通过搜索索引查询Lindorm宽表数据,包括多维查询、排序翻页、分词查询、模糊查询和聚合分析。
前提条件
- 已通过Lindorm-cli连接宽表引擎。具体操作,请参见通过Lindorm-cli连接并使用宽表引擎。
- 已准备测试数据并创建搜索索引。具体内容,请参见管理搜索索引。
多维查询
执行以下语句实现多维查询。

SELECT * FROM search_table WHERE gender='M' AND city='杭州' OR city='北京';
查询结果如下:
SELECT * FROM search_table WHERE age > 30 AND city != '杭州';
查询结果如下:
排序翻页
- 搜索索引支持通过
limit
或者offset
方式进行数据翻页,执行以下语句实现数据翻页查询。SELECT * FROM search_table WHERE gender='M' LIMIT 1,10;
查询结果如下: - 搜索索引支持任意列的排序,执行以下语句实现数据排序查询。
SELECT * FROM search_table WHERE gender='M' ORDER BY age DESC;
查询结果如下:
分词查询
分词查询的列使用
=
查询,示例如下:address
列是分词字段,执行以下语句查询age
的范围在(10,50]
并且address
在余杭区的数据。SELECT * FROM search_table WHERE age > 10 AND age <= 50 AND address='余杭区';
查询结果如下:
模糊查询
执行以下语句查询
email
列中包含example的数据。SELECT * FROM search_table WHERE email LIKE '%example%';
查询结果如下:
说明 模糊查询的性能受限于表的数据量,推荐使用分词查询。
聚合分析
搜索索引支持常用的聚合函数,例如COUNT、SUM、AVG、MIN、MAX。同时,搜索索引也支持DISTINCT和GROUP BY功能。
- 执行以下语句,查询
city
为杭州
的数据的总数。
查询结果如下:SELECT COUNT(*) FROM search_table WHERE city='杭州';
- 执行以下语句,实现数据统计去重查询。
查询结果如下:SELECT distinct(age) FROM search_table WHERE gender='M';
- 执行以下语句,实现分组查询。
查询结果如下:SELECT city,count(*) as cnt FROM search_table WHERE gender='M' GROUP BY city ORDER BY cnt DESC;
说明 聚合查询时,如果未指定WHERE条件,将无法命中搜索索引。此时可以在WHERE关键字前添加
force index(search_index_name)
语句,强制使用搜索索引。更多说明,请参见SELECT语法。短语匹配查询
执行以下语句,实现短语匹配查询。
SELECT name,age,city,address FROM search_table WHERE age > 1 AND age < 100 AND address = '"北京朝阳"' ;
查询结果如下:
