# Elasticsearch Source组件使用说明
# 组件说明
Elasticsearch Source 连接器用于从 Elasticsearch 集群读取数据,支持 2.x 至 8.x 版本,具备单索引/多索引同步、DSL/SQL查询、Schema投影及SSL认证等核心能力。
# 配置项说明
| 配置名称 | 数据类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 节点名称 | String | 是 | Elasticsearch | 当前创建的节点名称,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 节点编码 | String | 是 | 自动生成 | 当前创建的节点编码,以此标识此组件,由用户自定义且不可为空。命名可包含字母、数字、下划线。确保唯一性。 |
| 选择数据源 | String | 是 | - | 从下拉选项中选择列出的当前项目已经关联的数据源。 |
| 索引名称 | String | 是 | - | Elasticsearch索引名称,支持 * 模糊匹配。 索引名称必须是小写的,不能用下划线开头,不能包含逗号,例如:seatunnel_${age} |
| 读取方式 | String | 否 | - | 读取方式有两种:数据结构、索引字段,必须二选一进行配置。 采用"索引字段"时,用户可以通过指定字段 _id 来获取文档 id。如果将 _id 下沉到其他索引,由于 Elasticsearch 的限制,需要为 _id 指定别名。 |
| 查询条件 DSL | String | 否 | - | 用户可以通过编写 DSL 语句控制读取数据的范围。 Elasticsearch 提供了一个基于 JSON 的完整查询DSL(域特定语言)来定义查询。 具体参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html |
| scrollTime | Int | 否 | 1 | Elasticsearch 请求保持搜索上下文活动的时间量。 单位:天(-d),小时(-h),分钟(-m),秒(-s),毫秒(-ms),微秒(-micros),纳秒(-nanos) 例如:1d,1h,1m,1s,1ms,1micros,1nanos |
| scrollSize | Int | 否 | 100 | 每次滚动请求返回的最大文档数。 |
| 可选参数 | - | 否 | - | 其他参数,用户可以根据需求进行配置。 |
# FAQ
Q1:是否支持滚动续传?
是的,底层通过scroll实现,scroll_time控制上下文保留时间,scroll_size控制批次大小。
Q2:如何读取文档_id?
必须在source数组中显式包含"_id"字段。由于ES限制,若要将_id写入下游ES索引,需为其指定别名。
Q3:多索引同步时,下游如何区分数据来自哪个索引?
可在index_list中为每个索引配置不同的result_table_name,或在Transform阶段添加标识字段(需自定义)。
Q4:遇到类加载冲突(LinkageError)?
此问题在早期版本(<2.3.5)的SeaTunnel Engine集群模式下出现,由Jackson类加载器隔离引起。2.3.5+已修复。如使用旧版本,升级连接器或引擎版本即可。
Q5:SQL查询提示类型不支持?
SQL模式不支持map、array、nested等复杂类型。如数据中包含此类字段,必须改用DSL模式。