【Trino实战】Elasticsearch Connector辅助说明

这篇具有很好参考价值的文章主要介绍了【Trino实战】Elasticsearch Connector辅助说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elasticsearch Connector

要求与配置

对ES的版本要求:(Elasticsearch 6.6.0 or later) or OpenSearch (1.1.0 or later) 。

connector.name=elasticsearch
elasticsearch.host=190.168.1.1,190.168.1.2,190.168.1.3
elasticsearch.port=9200
elasticsearch.default-schema-name=default

常规配置

Property name Description 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.backoff-init-delay 对Elasticsearch的单个请求进行反压重试的最小时间间隔。设置得太低,可能会使ES集群负载过高。 500ms
elasticsearch.backoff-max-delay 对Elasticsearch的单个请求进行反压重试的最大时间。 20s
elasticsearch.max-retry-time 对Elasticsearch的单个请求,在所有重试中的最大持续时间。 20s
elasticsearch.node-refresh-interval 可用的Elasticsearch节点列表多久刷新一次。 1m
elasticsearch.ignore-publish-address 禁止使用Elasticsearch发布的地址来连接查询。

密码认证配置

要启用密码认证,需要将elasticsearch.security选项设置为PASSWORD。此外,还需要适当地配置以下选项:

Property name Description
elasticsearch.auth.user 用户登录名称
elasticsearch.auth.password 用户密码

字段类型映射

Elasticsearch type Trino type Notes
BOOLEAN BOOLEAN
DOUBLE DOUBLE
FLOAT REAL
BYTE TINYINT
SHORT SMALLINT
INTEGER INTEGER
LONG BIGINT
KEYWORD VARCHAR
TEXT VARCHAR
DATE TIMESTAMP Elasticsearch支持大量的日期格式,包括内置日期格式和自定义日期格式。Elasticsearch连接器只支持默认的日期类型。所有其他的日期格式,包括内置日期格式和自定义日期格式,都不被支持。带有格式属性的日期会被忽略。
IPADDRESS IP

特殊情况的处理

数组类型的处理

借助索引的元信息配置(_meta.presto)对字段进行数组标注,通过数组函数可以进行数据的处理。

curl --request PUT \
    --url localhost:9200/doc/_mapping \
    --header 'content-type: application/json' \
    --data '
{
    "_meta": {
        "trino":{
            "array_string_field":{
                "isArray":true
            },
            "object_field":{
                "array_int_field":{
                    "isArray":true
                }
            },
        }
    }
}'

样例数据

{
    "array_string_field": ["trino","the","lean","machine-ohs"],
    "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
    }
}

原始JSON(RawJson)的处理

对于在Elasticsearch支持的类型,却在Trino中不被支持,如dense_vector。或者新的类型不断出现,这可能会导致在Elasticsearch中使用这些类型的用户出现解析异常。Trino提出来原始json的方式来解决异常。借助索引的元信息配置(_meta.presto)对字段进行原生json标注,该字段以及下面的所有嵌套字段都需要被转换为一个包含原始JSON内容的VARCHAR字段。通过JSON函数可以进行数据的处理。

curl --request PUT \
    --url localhost:9200/doc/_mapping \
    --header 'content-type: application/json' \
    --data '
{
    "_meta": {
        "presto":{
            "array_string_field":{
                "asRawJson":true
            }
        }
    }
}'

⚠️ 一个字段不能同时被标注成数组和原生json

查询

全文检索

Trino SQL查询可以与Elasticsearch查询相结合,提供全文查询作为表名的一部分,用冒号分隔。

SELECT * FROM "tweets: +trino SQL^2"

select * from elasticsearch."default"."allcountries: Roc"

谓词下推

predicate push down:将数据过滤尽可能的靠近数据源,以在查询与关联的时候跳过更多的无关数据。

支持谓词下推的数据类型:

Elasticsearch Trino 是否支持
binary VARBINARY NO
boolean BOOLEAN YES
double DOUBLE YES
float REAL YES
byte TINYINT YES
short SMALLINT YES
integer INTEGER YES
long BIGINT YES
keyword VARCHAR YES
text VARCHAR NO
date TIMESTAMP YES
ip IPADDRESS NO

sql支持程度

只支持数据查询和一些元数据的查询

Table functions

原生查询raw_query(varchar) -> table

raw_query函数允许你直接查询底层数据库。这个函数需要Elastic Query DSL语法,因为完整的查询是在Elasticsearch中下推和处理。这对于访问Trino中没有的原生功能或提高查询性能是非常有用的,在这种情况下运行原生查询可能会更快。

传递给底层数据源的原生查询需要返回一个表作为结果集。只有数据源使用自己的配置为这些查询执行验证或安全检查。Trino不执行这些任务。只使用直通式查询来读取数据。

raw_query函数需要三个参数:

  • schema: 要执行查询的目录中的模式。
  • index: 要搜索的Elasticsearch中的索引。
  • query: 要执行的查询,用Elastic Query DSL编写。

一旦执行,查询就会返回一条包含Elasticsearch返回的结果JSON有效载荷的单行。(其实结果原生查询的返回结果,满足json格式的字符串)

例如,查询example目录并使用raw_query表函数在orders索引中搜索国家名称为ALGERIA的文档:

SELECT
  *
FROM
  TABLE(
    example.system.raw_query(
      schema => 'sales',
      index => 'orders',
      query => '{
        "query": {
          "match": {
            "name": "ALGERIA"
          }
        }
      }'
    )
  );
  
  
select
	*
from
	table(
    elasticsearch.system.raw_query(
      schema => 'default',
	index => 'allcountries',
	query => '{
        "query": {
          "match": {
            "name": "China"
          }
        }
      }'
    )
  );

📓查询引擎不保留这个函数的结果的顺序。如果传递的查询包含一个ORDER BY子句,函数结果可能不会像预期的那样排序。原生查询的排序也需要原生语法支持

查询结果文章来源地址https://www.toymoban.com/news/detail-734534.html

{"took":3,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":142,"max_score":3.254666,"hits":[{"_index":"allcountries","_type":"_doc","_id":"UCLidYgBOCz7_9E9_5x3","_score":3.254666,"_source":{"name": "Canal Tancada", "geonameid": 3038965, "longitude": 1.55854, "country_code": "AD", "latitude": 42.488990000000001, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"fSLidYgBOCz7_9E9_6F7","_score":3.254666,"_source":{"name": "Canal Gran", "geonameid": 3040296, "longitude": 1.5885499999999999, "country_code": "AD", "latitude": 42.552370000000003, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"tiLidYgBOCz7_9E9_6F8","_score":3.254666,"_source":{"name": "Canal Fosca", "geonameid": 3040353, "longitude": 1.5380199999999999, "country_code": "AD", "latitude": 42.601190000000003, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"tyLidYgBOCz7_9E9_6F8","_score":3.254666,"_source":{"name": "Canal Fosca", "geonameid": 3040354, "longitude": 1.5561499999999999, "country_code": "AD", "latitude": 42.502000000000002, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"gCLidYgBOCz7_9E9_6N9","_score":3.254666,"_source":{"name": "Canal Dreta", "geonameid": 3040817, "longitude": 1.4865900000000001, "country_code": "AD", "latitude": 42.506630000000001, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"HyLidYgBOCz7_9E9_5x3","_score":3.1907582,"_source":{"name": "Canal Torta", "geonameid": 3038916, "longitude": 1.5170600000000001, "country_code": "AD", "latitude": 42.576839999999997, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"eiLidYgBOCz7_9E9_6F7","_score":3.1907582,"_source":{"name": "Canal Gran", "geonameid": 3040293, "longitude": 1.4723900000000001, "country_code": "AD", "latitude": 42.58005, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"gSLidYgBOCz7_9E9_6F7","_score":3.1907582,"_source":{"name": "Canal Gran", "geonameid": 3040300, "longitude": 1.4840100000000001, "country_code": "AD", "latitude": 42.475360000000002, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"3iLidYgBOCz7_9E9_6J9","_score":3.1907582,"_source":{"name": "Canal d’Engolasters", "geonameid": 3040652, "longitude": 1.5842799999999999, "country_code": "AD", "latitude": 42.527250000000002, "population": 0}},{"_index":"allcountries","_type":"_doc","_id":"ICLidYgBOCz7_9E9_5x3","_score":3.0922737,"_source":{"name": "Canal Torta", "geonameid": 3038917, "longitude": 1.5398000000000001, "country_code": "AD", "latitude": 42.551839999999999, "population": 0}}]}}

到了这里,关于【Trino实战】Elasticsearch Connector辅助说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (二)ElasticSearch 辅助工具 Kibana 介绍与安装

    Kibana 是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。 Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板 (dashboard)实时显示E

    2023年04月26日
    浏览(92)
  • Elasticsearch(八)搜索---搜索辅助功能(上)--指定搜索返回字段,结果计数和分页

    前面我们已经将ES的基础操作(索引,映射,文档)学习过了,从这一章开始,我们便开始学习ES的最大的功能—搜索 ES为用户提供了丰富的搜索功能:既有基本的搜索功能,又有搜索建议功能;既有常用的普通类型的匹配功能,又有基于地理位置的搜索功能;既提供了分页搜

    2024年02月05日
    浏览(50)
  • 60、Flink CDC 入门介绍及Streaming ELT示例(同步Mysql数据库数据到Elasticsearch)-CDC Connector介绍及示例 (1)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月19日
    浏览(47)
  • Elasticsearch日志文件说明

    Elasticsearch_access.log 访问日志 记录了访问Elasticsearch集群的信息。Elasticsearch集群的访问日志包含所有查询请求的详细信息,例如uri、请求体的大小以及请求启动的时间。只能在Elasticsearch控制台中查看Elasticsearch V6.7.0和V7.10集群的访问日志。 参考:https://www.alibabacloud.com/help/en/e

    2024年02月16日
    浏览(25)
  • elasticsearch目录及配置参数说明

    存放ES启动、关闭等脚本文件 存放执行文件,例如启动脚本、密钥工具等 ES的配置文件所在的目录,其中有三个主要的配置文件 elasticsearch.yml是用于ES的最主要的配置文件 jvm.options用于配置ES JVM设置 log4j2.properties用于配置ES 日志记录的属性 ES自带的JDK目录 默认的索引数据存储

    2024年02月16日
    浏览(47)
  • Elasticsearch常用接口使用说明以及postman调用调试

    接口url:http://xxxx:9200/_cat   http://xxxx:9200/_cat/indices?v   http://xxxx:9200/test-20230526?pretty 返回值 {      \\\"acknowledged\\\" :  true ,      \\\"shards_acknowledged\\\" :  true ,      \\\"index\\\" :  \\\"test-20230526\\\" }   http://xxxx:9200/seatunnel-20230526/_search?q=*pretty   http://xxxx:9200/_bulk 类型:POST Header: Content-Type  

    2024年02月07日
    浏览(96)
  • 3: [SpringData集成Elasticsearch] --- 创建索引和字段 --- 相关注解说明

    1.1.0:注意:ES 6.0.0以后ndex一个索引对应一个type(mysql 库里的表) 每个index有shard分片存储文件,相互独立。 1.1.1:@Document元注解参数和使用 — 注解使用 1.2.1:参数说明: type — 枚举类型 @Field(analyzer = “ik_max_word”,type = FieldType.Text) package org.springframework.data.elasticsearch.annotations

    2024年02月07日
    浏览(35)
  • 掌握它才说明你真正懂 Elasticsearch - Lucene (一)

    Lucene 简介 Lucene 是一种高性能、可伸缩的信息搜索(IR)库,在 2000 年开源,最初由鼎鼎大名的 Doug Cutting 开发,是基于 Java 实现的高性能的开源项目。 Lucene 采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全

    2024年02月03日
    浏览(79)
  • ElasticSearch学习之ElasticSearch快速入门实战

    1.先“分词” 2.倒排索引(前提是分词) ElasticSearch官网地址: 欢迎来到 Elastic — Elasticsearch 和 Kibana 的开发者 | Elastic https://www.elastic.co/cn/ 下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 我在本地下载的是7.17.3版本  解压: 启动es之前别忘了配置环境变量:ES_JA

    2024年02月14日
    浏览(34)
  • ElasticSearch 实战:ElasticSearch文档全文检索

    Elasticsearch 实战:Elasticsearch 文档全文检索 全文检索是 Elasticsearch 的核心功能之一,它允许用户对文本内容进行高效的模糊搜索、词组匹配、同义词处理、停用词过滤等操作。以下是如何进行文档全文检索的详细步骤: **1. **全文匹配查询(Match Query) 最基础的全文检索查询是

    2024年04月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包