solr的并行接口,说直白些,就是为solr全文索引进行无缝集成,使我们可以像操作数据库那样使用sql操作solr。目前,solr并行sql接口只支持solrcloud。
solrcloud的集合(collection)对应数据库中的表(table)表名不区分大小写。SQL查询中的列名直接映射到要查询的集合(collection)的Solr索引中的字段。这些标识符区分大小写。支持别名,可在ORDER BY子句中引用。
1)查询id返回20条数据
select id from techproducts limit 20;
2)查询集合名为techproducts中多个字段
SELECT manu as mfr, price as retail FROM techproducts;
3)查询字段cat所有数据
select cat from techproducts;
4)查询所有name字段为’Jhereg’
select * from techproducts where name=’Jhereg’;
5)查询所有数据(我使用的是测试数据,下面语句查询,有时会报错.可能是链接数据库客户端查询的时候提前关闭了链接导致的错误,可能是由于分号导致的。)
select * from techproducts;
DbVisualizer 10.0.13 这个工具默认是免费版,它的pro版本是收费的,免费版就够我们测试和学习的了。同时它还支持其他的客户端连接工具。我们去官网下载安装即可,如果是学习我觉得没有必要购买pro版本
下载地址:
https://www.dbvis.com/download/10.0
http://lucene.apache.org/solr/guide/7_3/solr-jdbc-dbvisualizer.html
1)支持转义保留字,这就意味着,我们字段如果是sql保留字段,我们可以通过引号来转义。
select from
from emails
2)select语句
SELECT fieldA as fa, fieldB as fb, fieldC as fc FROM tableA WHERE fieldC = ‘term1 term2’ ORDER BY fa desc LIMIT 100
3)where语句,WHERE子句必须在谓词的一侧有一个字段。不支持两个常量(5 < 10)或两个字段(fielda > fieldb)。子查询也不受支持。
WHERE子句允许将Solr的搜索语法注入到SQL查询中
select * from techproducts where name=’Black Cauldron’
WHERE fieldC = ‘term1 term2’
WHERE fieldC = ‘(term1 term2)’
WHERE fieldC = ‘[0 TO 100]’
WHERE ((fieldC = ‘term1’ AND fieldA = ‘term2’) OR (fieldB = ‘term3’))
WHERE (fieldA = ‘term1’) AND NOT (fieldB = ‘term2’)
支持WHERE运算符
= 等于 fielda = 10 fielda:10
<> 不相等 fielda <> 10 -fielda:10
!= 不相等 fielda != 10 -fielda:10
比...更棒 fielda > 10 fielda:{10 TO *]
= 大于或等于 fielda >= 10 fielda:[10 TO *]
< 少于 fielda < 10 fielda:[* TO 10}
<= 小于或等于 fielda <= 10 fielda:[* TO 10]
4)BETWEEN可以通过范围查询支持,例如field = [50 TO 100]
5)简单的LIKE可以与通配符一起使用,例如field = ‘sam*’
6)ORDER BY
7)SELECT DISTINCT查询
SELECT distinct fieldA as fa, fieldB as fb FROM tableA ORDER BY fa desc, fb desc
8)统计
SELECT count(*) as count, sum(fieldB) as sum FROM tableA WHERE fieldC = ‘Hello’
9)HAVING
SELECT fieldA, fieldB, count(*), sum(fieldC), avg(fieldY)
FROM tableA
WHERE fieldC = ‘term1 term2’
GROUP BY fieldA, fieldB
HAVING ((sum(fieldC) > 1000) AND (avg(fieldY) <= 10))
ORDER BY sum(fieldC) asc
LIMIT 100