You need to enable JavaScript to run this app.
导航

配置 Elasticsearch 数据源

最近更新时间2023.09.15 15:35:45

首次发布时间2022.09.15 17:46:56

Elasticsearch 是一个基于 Lucene 的实时分布式的搜索与分析引擎,是当前主流的企业级搜索引擎。Elasticsearch可以快速地、近乎于准实时地存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。
DataSail Elasticsearch 数据源,为您提供离线任务读取和写入 Elasticsearch 的双向通道能力。本文为您介绍 DataSail 中 Elasticsearch 的数据源配置、离线任务可视化和脚本模式(DSL)配置能力,实现与不同数据源的数据互通能力。

1 支持的 Elasticsearch 版本

支持自建 Elasticsearch(ES)和火山引擎云搜索服务 ES 标品的 6.X、7.X 版本。

2 使用限制

  1. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员

  2. DataSail 目前仅支持离线读、离线写 ES 能力。

3 支持的字段类型

字段类型ES ReaderES Writer
binary支持支持
boolean支持支持
keyword支持支持
long支持支持
integer支持支持
short支持支持
byte支持支持
double支持支持
float支持支持
half_float支持支持
date支持支持
ip支持支持
text支持支持
completion支持不支持
ip_range支持不支持
object支持不支持
nested支持不支持
integer_range支持不支持
float_range支持不支持
long_range支持不支持
double_range支持不支持
date_range支持不支持
token_count支持不支持
geo_point支持不支持
geo_shape支持不支持

4 数据同步任务开发

4.1 数据源注册

新建数据源操作详见配置数据源,以下为您介绍不同接入方式的 ES 数据源配置相关信息:

  • 火山-云搜索服务方式配置

    参数说明
    基本配置
    数据源类型Elasticsearch
    接入方式火山-云搜索服务
    数据源名称数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。
    参数配置

    实例 ID

    已在火山引擎云搜索服务中创建的 ES 实例名称,下拉可选。
    ES 实例创建方式详见创建 ESCloud 实例

    安全认证火山-云搜索服务接入方式,默认只支持使用用户名密码方式登录。
    用户名输入有权限访问 ES 实例中索引数据库的用户名信息。
    密码输入用户名对应的密码信息。
  • 连接串方式配置

    参数说明
    基本配置
    数据源类型Elasticsearch
    接入方式连接串
    数据源名称数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。
    参数配置
    连接协议支持选择 HTTP 或 HTTPS 连接协议。
    EndPoint集群访问地址,以主机名:端口的形式填写,多个请用逗号分隔,如:localhost:2181,localhost:2181
    安全认证支持使用用户名密码或匿名方式登录,其中匿名方式无需填写下方的用户名和密码信息。
    用户名输入有权限访问 ES 实例中索引数据库的用户名信息。
    密码输入用户名对应的密码信息。

4.2 新建离线任务

ES 数据源测试连通性成功后,进入到数据开发界面,开始新建 ES 相关通道任务。
新建任务方式详见离线数据同步

4.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 ES 批式读ES 批式写等通道任务。

4.3.1 ES 批式读

数据来源选择 Elasticsearch,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数
说明
*数据源类型下拉选择 Elasticsearch 数据源类型。

*数据源名称

已在数据源管理中注册成功的 ES 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 ES 数据源。

*索引名称下拉选择已创建成功的索引名称信息。
*索引类型下拉选择索引类型,不同 ES 版本,索引类型不同,ES 7.X 版本,索引类型默认为 _doc 。

数据过滤

支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,根据 ES 语法,筛选数据,如:{"match": {"int_info": 1}}
语句填写完成后,您可单击右侧的校验按钮,进行过滤语句校验。

说明

该过滤语句通常用作增量同步,其语法需要和选择的数据源类型对应。

分页大小决定了每次请求ES获取到的文档的数量。
游标时间每次游标查询的过期时间,该时间内能获取单页数据即可。

4.3.2 ES 批式写

数据目标端选择 ES,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数说明
*数据源类型下拉选择 Elasticsearch 数据源类型。

*数据源名称

已在数据源管理中注册成功的 ES 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 ES 数据源。

*索引名称下拉展现已创建成功的索引名称信息,选择需要写入数据的索引信息。

*索引类型

下拉选择 ES 中索引的类型,不同 ES 版本,索引类型不同,其中:

  • ES 7.X 版本,索引类型默认为 _doc 。

  • ES 6.X 版本,可根据设定的索引类型进行选择,或者直接输入需要创建的索引,支持时间变量方式。

*清理原索引数据

选择写入时是否清理原索引中的数据:

  • 是:导入数据前删除原来的索引并重建同名索引,此操作会删除该索引下的数据。

  • 否:导入数据前保留索引中已存在的数据。

*写入类型

选择数据写入方式:

  • 插入:所有数据直接插入

  • 更新:存在相同主键时更新数据,否则插入

*自动 mappings在文档中发现未存在的字段时,集成任务是否通过 Elasticsearch 动态映射机制为字段添加映射。

*主键取值方式

源表主键:document 的 id 使用源表的字段,支持多字段拼接。
无主键:系统自动生成 _id 值。

*主键字段主键取值方式为“源表主键”时,必须填写主键字段,您可通过下拉方式选择。
主键分隔符有多个主键字段时,需填写将主键字段值拼接在一起的主键分隔符,默认分隔符是空字符串。
批量提交大小一次性批量提交的 Document 条数
settings创建 index 时的 settings,与 Elasticsearch 官方一致,以 JSON 格式输入。

4.3.3 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
您可通过以下三种方式操作字段映射关系:

  • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。

  • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。

  • 同名映射:目标表字段,可通过源端字段同名映射的方式,填充目标表字段信息。

  • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

4.4 DSL 配置说明

ES 数据源支持使用 DSL 的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 ES Reader 和 ES Writer 参数脚本代码,来运行数据集成任务。

4.4.1 进入 DSL 模式

进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式

4.4.2 Elasticsearch Reader

进入 DSL 模式编辑界面后,您可根据实际情况替换相应参数,Elasticsearch Reader 脚本示例如下:

// **************************************
// 变量使用规则如下:
// 1.自定义参数变量: {{}}, 比如{{number}}
// 2.系统时间变量${}, 比如 ${date}、${hour}
// **************************************
{
    // [required] dsl version, suggest to use latest version
    "version": "0.2",
    // [required] execution mode, supoort streaming / batch now
    "type": "batch",
    // reader config
    "reader": {
        "type": "es",
        "datasource_id": {datasource_id},
        "parameter": {
            "columns": [
                {
                    "name": "name_sample",
                    "type": "type_sample"
                }
            ],
            "es_index": "es_index_sample",
            "es_doc_type": "_doc",
            "query":"query_temp",
            "batch_size":100,
            "scroll_keep_alive":600
        }
    },
    "writer": {
        ···
    },
    "common": {
       ···
    }
}

Reader 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

参数名称参数含义
*typereader type, 默认固定值 es
*datasource_id注册的 ES 数据源 ID。可以在项目控制台 > 数据源管理界面中查找。
*columns需要同步的字段名称。
*es_index需要读取数据的 ES 索引名称。
*es_doc_type不同 ES 版本,索引类型不同,ES 7.X 版本,索引类型默认为 _doc 。

query

数据查询过滤语句,ES Query 语句的 JSON String 格式。
例如:{"match": {"int_info": 1}}

batch_size分页大小,指定每页返回的文档数量。默认2000。
scroll_keep_alive游标时间,设置游标的有效生命周期时间,单位秒。 默认200s。

4.4.3 Elasticsearch Writer

根据实际情况替换 Elasticsearch Writer 相应参数,脚本示例如下:

{
    // [required] dsl version, suggest to use latest version
    "version": "0.2",
    // [required] execution mode, supoort streaming / batch now
    "type": "batch",
    // reader config
    "reader": {
        ...
    },
    "writer": {
        "type": "es",
        "datasource_id": {datasource_id},
        "parameter": {
            "bulk_max_actions":1000,
            "is_cleanup_index":false,
            "columns":[
                {
                    "upperCaseName":"ID",
                    "name":"id",
                    "type":"text"
                },
                {
                    "upperCaseName":"NAME",
                    "name":"name",
                    "type":"text"
                },
                {
                    "upperCaseName":"ADDRESS",
                    "name":"address",
                    "type":"text"
                }
            ],
            "is_dynamic_mapping":true,
            "es_doc_type":"_doc",
            "es_index":"es_test1_liuxu",
            "es_id_fields":"id",
            "es_upsert":false
        }
    },
    "common": {
        ...
    }
}

Writer 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

参数名称参数含义
*typewriter type, 默认固定值 es
*datasource_id注册的 ES 数据源 ID。可以在项目控制台 > 数据源管理界面中查找。
*columns需要同步的字段名称。
*es_index需要写入数据的 ES 索引名称。

*es_doc_type

不同 ES 版本,索引类型不同,其中:

  • ES 7.X 版本,索引类型默认为 _doc 。

  • ES 6.X 版本,可根据设定的索引类型进行填写,或者直接输入需要创建的索引,支持时间变量方式。

is_cleanup_index是否清理原索引数据。默认 false

es_upsert

数据写入类型,默认 false:

  • true 为 upsert;

  • false 为插入。

is_dynamic_mapping

是否开启自动 mapping。在文档中发现未存在的字段时,集成任务是否通过 Elasticsearch 动态映射机制为字段添加映射。
默认为 true

bulk_max_actions批量提交大小。默认1000
es_id_fieldsES 主键对应字段,不设置则自动生成 id。