One - One Code All

Blog Content

ElasticSearch opendistro插件的SQL特性支持及使用

ElasticSearch   2020-04-18 11:36:47

SQL特性支持

语句

语句例子
SelectSELECT * FROM my-index
DeleteDELETE FROM my-index WHERE _id=1
WhereSELECT * FROM my-index WHERE ['field']='value'
Order bySELECT * FROM my-index ORDER BY _id asc
Group bySELECT * FROM my-index GROUP BY range(age, 20,30,39)
LimitSELECT * FROM my-index LIMIT 50 (default is 200)
UnionSELECT * FROM my-index1 UNION SELECT * FROM my-index2
MinusSELECT * FROM my-index1 MINUS SELECT * FROM my-index2

注意:Like any complex query, large UNION and MINUS statements can strain or even crash your cluster.

条件查询

条件例子
LikeSELECT * FROM my-index WHERE name LIKE 'j%'
AndSELECT * FROM my-index WHERE name LIKE 'j%' AND age > 21
OrSELECT * FROM my-index WHERE name LIKE 'j%' OR age > 21
Count distinctSELECT count(distinct age) FROM my-index
InSELECT * FROM my-index WHERE name IN ('alejandro', 'carolina')
NotSELECT * FROM my-index WHERE name NOT IN ('jane')
BetweenSELECT * FROM my-index WHERE age BETWEEN 20 AND 30
AliasesSELECT avg(age) AS Average_Age FROM my-index
DateSELECT * FROM my-index WHERE birthday='1990-11-15'
NullSELECT * FROM my-index WHERE name IS NULL

聚合函数

聚合函数例子
avg()SELECT avg(age) FROM my-index
count()SELECT count(age) FROM my-index
max()SELECT max(age) AS Highest_Age FROM my-index
min()SELECT min(age) AS Lowest_Age FROM my-index
sum()SELECT sum(age) AS Age_Sum FROM my-index

字段包含与排除

PatternExample
include()SELECT include('a*'), exclude('age') FROM my-index
exclude()SELECT exclude('*name') FROM my-index

函数

You must enable fielddata in the document mapping for most string functions to work properly.

函数例子
floorSELECT floor(number) AS Rounded_Down FROM my-index
trimSELECT trim(name) FROM my-index
logSELECT log(number) FROM my-index
log10SELECT log10(number) FROM my-index
substringSELECT substring(name, 2,5) FROM my-index
roundSELECT round(number) FROM my-index
sqrtSELECT sqrt(number) FROM my-index
concat_wsSELECT concat_ws(' ', age, height) AS combined FROM my-index
/SELECT number / 100 FROM my-index
%SELECT number % 100 FROM my-index
date_formatSELECT date_format(date, 'Y') FROM my-index

连接

连接例子
Inner joinSELECT p.firstname, p.lastname, p.gender, dogs.name FROM people p JOIN dogs d  ON d.holdersName = p.firstname WHERE p.age > 12 AND d.age > 1
Left outer joinSELECT p.firstname, p.lastname, p.gender, dogs.name FROM people p LEFT JOIN dogs d ON d.holdersName = p.firstname
Cross joinSELECT p.firstname, p.lastname, p.gender, dogs.name FROM people p CROSS JOIN dogs d

连接约束

  1. 仅能连接两个索引。

  2. 必须对索引使用别名。

  3. ON连接中,仅能使用AND条件。

  4. WHERE子句中,不能组合多个索引在一起。

    支持:

    WHERE (a.type1 > 3 OR a.type1 < 0) AND (b.type2 > 4 OR b.type2 < -1)

    不支持:

    WHERE (a.type1 > 3 OR b.type2 < 0) AND (a.type1 > 4 OR b.type2 < -1)
  5. 不能对结果集使用GROUP BY or ORDER BY 。

  6. 不支持LIMIT with OFFSET。

显示

显示例子
Show tables likeSHOW TABLES LIKE logs-*

参考连接:https://opendistro.github.io/for-elasticsearch-docs/docs/sql/operations/  



上一篇:Elasticsearch plugin opendistro-sql插件安装
下一篇:MAC里“微软雅黑”字体标准体和粗体无法同时使用问题的解决方法

The minute you think of giving up, think of the reason why you held on so long.