- Elasticsearch连接器
- 概述
- 配置属性
elasticsearch.host
elasticsearch.port
elasticsearch.default-schema-name
elasticsearch.scroll-size
elasticsearch.scroll-timeout
elasticsearch.request-timeout
elasticsearch.connect-timeout
elasticsearch.max-retry-time
elasticsearch.node-refresh-interval
elasticsearch.security
elasticsearch.auth.user
elasticsearch.auth.password
- TLS Security
- Data Types
- Array Type
- 限制
Elasticsearch连接器
概述
Elasticsearch连接器允许从openLooKeng访问Elasticsearch数据。本文档主要介绍如何搭建Elasticsearch连接器来对Elasticsearch执行SQL查询。
注意:强烈推荐使用Elasticsearch 6.0.0及以上版本。
配置
要配置Elasticsearch连接器,请创建具有以下内容的目录属性文件etc/catalog/elasticsearch.properties
,并适当替换以下属性:
connector.name=elasticsearch
elasticsearch.host=localhost
elasticsearch.port=9200
elasticsearch.default-schema-name=default
配置属性
elasticsearch.host
定义连接Elasticsearch节点的主机。
此属性是必选。
elasticsearch.port
定义连接Elasticsearch节点的端口号。
此属性是可选的;默认值为9200。
elasticsearch.default-schema-name
定义将包含没有限定模式名称的所有表的模式。
此属性是可选的;默认值为default
。
elasticsearch.scroll-size
此属性定义每个Elasticsearch滚动请求中可以返回的最大命中数。
此属性是可选的;默认值为1000
。
elasticsearch.scroll-timeout
此属性定义了Elasticsearch将保持滚动请求的时间量(毫秒)。
此属性是可选的;默认值为1m
。
elasticsearch.request-timeout
此属性定义所有Elasticsearch请求的超时值。
此属性是可选的;默认值为10s
。
elasticsearch.connect-timeout
此属性定义了所有连接Elasticsearch的超时值。
此属性是可选的;默认值为1s
。
elasticsearch.max-retry-time
此属性定义了单个连接的最大重试时间。
此属性是可选的;默认值为20s
。
elasticsearch.node-refresh-interval
此属性定义了可用Elasticsearch节点更新频率。
此属性是可选的;默认值为1m
。
elasticsearch.security
配置连接Elasticsearch的认证类型。目前仅支持PASSWORD
。
elasticsearch.auth.user
连接Elasticsearch认证的用户名。
elasticsearch.auth.password
连接Elasticsearch认证的密码。
TLS Security
Elasticsearch连接器提供了额外安全选项支持开启了TLS的Elasticsearch节点。该连接器支持PEM或JKS格式的key store和trust store。配置参数如下:
elasticsearch.tls.keystore-path
此属性定义了PEM或JKS格式的key store文件的路径, 该文件必须可由运行openLooKeng的操作系统用户读取。
此属性是可选的。
elasticsearch.tls.truststore-path
此属性定义了PEM或JKS格式的trust store文件的路径, 该文件必须可由运行openLooKeng的操作系统用户读取。
此属性是可选的。
elasticsearch.tls.keystore-password
此属性定义了key store文件的密码。
此属性是可选的。
elasticsearch.tls.truststore-password
此属性定义了trust store文件的密码。
此属性是可选的。
示例:
elasticsearch.tls.enabled=true
elasticsearch.tls.keystore-path=/etc/elasticsearch/openLooKeng.jks
elasticsearch.tls.keystore-password=keystore_password
Data Types
数据类型映射关系如下:
Elasticsearch | openLooKeng |
---|---|
binary | VARBINARY |
boolean | BOOLEAN |
double | DOUBLE |
float | REAL |
byte | TINYINT |
short | SMALLINT |
integer | INTEGER |
long | BIGINT |
keyword | VARCHAR |
text | VARCHAR |
date | TIMESTAMP |
ip | IPADDRESS |
(all others) | (unsupported) |
Array Type
Elasticsearch中的字段可以包含单个或多个值,但没有数组类型。要说明字段中包含数组,可以在索引映射的_meta中用Presto特定的结构对其进行注释。
例如,有一个包含以下结构的文档的索引:
{
"array_string_field": ["presto","is","the","besto"],
"long_field": 314159265359,
"id_field": "564e6982-88ee-4498-aa98-df9e3f6b6109",
"timestamp_field": "1987-09-17T06:22:48.000Z",
"object_field": {
"array_int_field": [86,75,309],
"int_field": 2
}
}
可以使用以下命令定义该结构的数组字段,将字段属性定义添加到目标索引映射的_meta.presto属性中。
curl --request PUT \
--url localhost:9200/doc/_mapping \
--header 'content-type: application/json' \
--data '
{
"_meta": {
"presto":{
"array_string_field":{
"isArray":true
},
"object_field":{
"array_int_field":{
"isArray":true
}
},
}
}
}'
限制
- openLooKeng不支持查询Elasticsticsearch中有重复列名的表,如:列名为“name”和“NAME”;
- openLooKeng不支持Elasticsticsearch表名含有特殊字符,如‘-’,‘.’等。