Elastic Salesforce 连接器参考

编辑

Elastic Salesforce 连接器 是用于 Salesforce 数据源的连接器

Elastic 托管连接器参考

编辑
查看Elastic 托管连接器参考
可用性和先决条件
编辑

此连接器自 8.12.0 版本起在 Elastic Cloud 中作为托管连接器提供。要使用此连接器,请满足所有自管理连接器要求

兼容性
编辑

此连接器与以下各项兼容

  • Salesforce
  • Salesforce 沙箱
创建 Salesforce 连接器
编辑

使用 UI

编辑

要创建新的 Salesforce 连接器

  1. 在 Kibana UI 中,从主菜单导航至搜索 → 内容 → 连接器页面,或使用全局搜索字段
  2. 按照说明创建新的原生 Salesforce 连接器。

有关其他操作,请参阅Kibana 中的连接器 UI

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的原生 Salesforce 连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
    is_native=True,
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
  is_native: true,
});
console.log(response);
PUT _connector/my-salesforce-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Salesforce",
  "service_type": "salesforce",
  "is_native": true
}
您还需要为连接器创建 API 密钥 以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

要为连接器创建 API 密钥

  1. 运行以下命令,替换指示的值。请注意响应中返回的 idencoded

    resp = client.security.create_api_key(
        name="my-connector-api-key",
        role_descriptors={
            "my-connector-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "my-index_name",
                            ".search-acl-filter-my-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "my-connector-api-key",
      role_descriptors: {
        "my-connector-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "my-connector-api-key",
      "role_descriptors": {
        "my-connector-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 encoded 值来存储连接器密钥,并记下此响应中返回的 id

    resp = client.connector.secret_post(
        body={
            "value": "encoded_api_key"
        },
    )
    print(resp)
    const response = await client.connector.secretPost({
      body: {
        value: "encoded_api_key",
      },
    });
    console.log(response);
    POST _connector/_secret
    {
      "value": "encoded_api_key"
    }
  3. 使用 API 密钥 id 和连接器密钥 id 更新连接器

    resp = client.connector.update_api_key_id(
        connector_id="my_connector_id>",
        api_key_id="API key_id",
        api_key_secret_id="secret_id",
    )
    print(resp)
    const response = await client.connector.updateApiKeyId({
      connector_id: "my_connector_id>",
      api_key_id: "API key_id",
      api_key_secret_id: "secret_id",
    });
    console.log(response);
    PUT /_connector/my_connector_id>/_api_key_id
    {
      "api_key_id": "API key_id",
      "api_key_secret_id": "secret_id"
    }

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

使用方法
编辑

要将此连接器用作自管理连接器,请使用 Kibana UI 中的连接器工作流程。

有关其他操作,请参阅连接器使用方法

您需要创建启用了 OAuth2.0 的 Salesforce 连接应用程序才能使用 Salesforce 进行身份验证。

创建 Salesforce 连接应用程序
编辑

Salesforce 连接器通过连接应用程序与 Salesforce 进行身份验证。有关配置用于 OAuth 2.0 客户端凭据流程的连接应用程序,请参阅 Salesforce 官方文档。

创建连接应用程序时,在标题为 API(启用 OAuth 设置)的部分中,确保启用以下设置

  • 启用 OAuth 设置
  • 启用设备流程

    • 回调 URL应为 Salesforce 虚拟回调 URL https://test.salesforce.com/services/oauth2/success
  • 需要 Web 服务器流程的密钥
  • 需要刷新令牌流程的密钥
  • 启用客户端凭据流程

应禁用所有其他选项。最后,在选定的 OAuth 范围部分中,包含以下 OAuth 范围

  • 通过 API 管理用户数据 (api)
  • 随时执行请求 (refresh_token, offline_access)
Salesforce 管理员要求
编辑

默认情况下,Salesforce 连接器需要全局管理员权限才能访问 Salesforce 数据。展开下面的部分,了解如何使用最少的权限创建自定义 Salesforce 用户。

创建具有最少权限的自定义 Salesforce 用户

通过从“设置”菜单创建具有足够权限的自定义配置文件,您可以删除从 Salesforce 中提取数据对系统管理员角色的要求。

要创建新的配置文件

  1. 从 Salesforce“设置”菜单中,转到管理 ⇒ 用户 ⇒ 配置文件
  2. 创建一个新的配置文件。
  3. 现有配置文件下拉列表中选择 只读标准用户。为配置文件命名并保存。

    默认情况下,只读标准用户 用户具有访问所有标准对象的读取权限。

  4. 编辑新创建的配置文件。在对象权限下,至少向您要提取到 Elasticsearch 中的标准对象和自定义对象分配 读取 权限。
  5. 确保新创建的配置文件至少具有以下标准对象的 读取 权限

    • 帐户
    • 市场活动
    • 案例
    • 联系人
    • 电子邮件消息
    • 潜在客户
    • 商机
    • 用户

      如果使用高级同步规则,则需要为配置文件中的特定对象分配 读取 权限。

  6. 转到用户 ⇒ 配置文件,并将新创建的配置文件分配给用户。
  7. 转到连接的应用程序,选择您的应用程序,然后选择编辑策略。在 Salesforce 中,将客户端凭据流分配给具有自定义配置文件的用户。

    现在,可以为该用户配置文件配置连接器以提取所有对象记录,而无需系统管理角色。

配置
编辑

需要以下设置才能设置此连接器

域(必需)
您的 Salesforce 帐户的域。这是显示在您的 Salesforce URL 中的子域。例如,如果您的 Salesforce URL 为 foo.my.salesforce.com,则您的域将为 foo。如果您使用的是 Salesforce 沙箱,则您的 URL 将包含一个额外的子域,并且类似于 foo.sandbox.my.salesforce.com。在这种情况下,您的域将为 foo.sandbox
客户端 ID(必需)
由您的连接应用程序生成的客户端 ID。Salesforce 文档有时也会将其称为消费者密钥
客户端密钥(必需)
由您的连接应用程序生成的客户端密钥。Salesforce 文档有时也会将其称为消费者密钥
启用文档级安全性

切换以启用文档级安全性 (DLS)。可选,默认禁用。有关详细信息,请参阅DLS 部分,包括如何设置各种 Salesforce 权限类型。

启用后

  • 完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。
  • 访问控制同步将提取用户的访问控制列表,并将其存储在单独的索引中。
查找客户端 ID 和客户端密钥
编辑

创建连接的应用程序后,客户端 ID 和客户端密钥不会自动显示给您。您可以通过执行以下步骤找到它们

  • 导航至设置
  • 转到平台工具 > 应用程序 > 应用程序管理器
  • 单击您的应用程序旁边的三角形,然后选择查看
  • 页面加载后,单击管理消费者详细信息

您的客户端 ID 和客户端密钥现在应在页面顶部可见。

文档级安全性 (DLS)
编辑

文档级安全性 (DLS) 使您可以根据用户的权限限制对文档的访问。此功能默认情况下可用于 Salesforce 连接器,并支持标准和自定义对象

Salesforce 允许用户通过以下方式设置权限

  • 配置文件
  • 权限集
  • 权限集组

有关指导,请参阅有关设置 Salesforce 权限的视频教程

要提取任何标准或自定义对象,用户必须确保至少将 读取 权限授予该对象。可以使用以下任何方法授予此权限来设置权限。

使用配置文件设置权限
编辑

有关通过配置文件设置权限的信息,请参阅Salesforce 文档

使用权限集设置权限
编辑

请参阅Salesforce 文档,了解如何通过权限集设置权限。

使用权限集组设置权限
编辑

请参阅Salesforce 文档,了解如何通过权限集组设置权限。

将简档、权限集和权限集组分配给用户
编辑

设置权限后,将简档、权限集或权限集组分配给用户。在 Salesforce 中按照以下步骤操作

  1. 导航到 用户 部分下的 管理
  2. 选择 用户,然后选择要设置权限的用户。
  3. 设置在先前步骤中创建的 简档权限集权限集组
同步规则
编辑

基本同步规则对于所有连接器都是相同的,并且默认可用。有关更多信息,请阅读同步规则类型

高级同步规则
编辑

高级同步规则生效需要进行完全同步

以下部分描述了此连接器的高级同步规则。高级同步规则允许在索引到 Elasticsearch 之前过滤 Salesforce 中的数据。

它们采用以下参数

  1. query:用于过滤文档的 Salesforce 查询。
  2. language:Salesforce 查询语言。允许的值为SOQLSOSL

基于指定的查询和语言获取文档

示例:使用 SOQL 查询获取文档

[
  {
    "query": "SELECT Id, Name FROM Account",
    "language": "SOQL"
  }
]

示例:使用 SOSL 查询获取文档。

[
  {
    "query": "FIND {Salesforce} IN ALL FIELDS",
    "language": "SOSL"
  }
]

使用 SOQL 和 SOSL 查询获取标准和自定义对象

示例:通过 SOQL 和 SOSL 查询获取标准对象的文档。

[
  {
    "query": "SELECT Account_Id, Address, Contact_Number FROM Account",
    "language": "SOQL"
  },
  {
    "query": "FIND {Alex Wilber} IN ALL FIELDS RETURNING Contact(LastModifiedDate, Name, Address)",
    "language": "SOSL"
  }
]

示例:通过 SOQL 和 SOSL 查询获取自定义对象的文档。

[
  {
    "query": "SELECT Connector_Name, Version FROM Connector__c",
    "language": "SOQL"
  },
  {
    "query": "FIND {Salesforce} IN ALL FIELDS RETURNING Connectors__c(Id, Connector_Name, Connector_Version)",
    "language": "SOSL"
  }
]

获取具有标准和自定义字段的文档

示例:获取 Account 对象的所有标准和自定义字段的文档。

[
  {
    "query": "SELECT FIELDS(ALL) FROM Account",
    "language": "SOQL"
  }
]

示例:获取 Connector 对象的所有自定义字段的文档。

[
  {
    "query": "SELECT FIELDS(CUSTOM) FROM Connector__c",
    "language": "SOQL"
  }
]

示例:获取 Account 对象的所有标准字段的文档。

[
  {
    "query": "SELECT FIELDS(STANDARD) FROM Account",
    "language": "SOQL"
  }
]
文档和同步
编辑

连接器会同步以下 Salesforce 对象

  • 账户
  • 市场活动
  • 案例
  • 联系人
  • 内容文档(上传到 Salesforce 的文件)
  • 潜在客户
  • 商机

连接器不会摄取它没有查询权限的任何对象。

  • 不会提取大于 10 MB 的文件的内容。(自管理连接器可以使用自管理本地提取服务来处理更大的二进制文件。)
  • 默认情况下,权限不会同步。您必须启用文档级安全。否则,索引到 Elastic 部署的所有文档对于所有有权访问该 Elastic 部署的用户都可见。
同步类型
编辑

默认情况下,所有连接器都支持完全同步

此连接器还支持增量同步

内容提取
编辑

如果内容文档满足以下条件,则连接器将从您的 Salesforce 来源检索它们

  • 附加到一个或多个已同步的对象
  • 属于可以提取的文件类型

这意味着连接器不会摄取任何未附加到受支持的 Salesforce 对象的内容文档。有关支持的对象类型列表,请参见文档和同步

如果单个内容文档附加到多个受支持的对象,则只会为其创建一个 Elastic 文档。此文档将在 related_ids 字段中保留到每个与之连接的对象的链接。

有关内容提取的更多详细信息,请参见内容提取

已知问题
编辑
  • DLS 功能是“类型级别”而不是“文档级别”

    8.13.0 中添加的 Salesforce DLS 不适用于对特定 Salesforce 对象进行特定访问控制。相反,如果给定用户/组可以访问给定类型的任何对象(案例潜在客户商机等),则该用户/组将出现在该类型所有对象的 \_allow_access_control 列表中。有关更多详细信息,请参见 https://github.com/elastic/connectors/issues/3028

    有关所有连接器的已知问题列表,请参见连接器已知问题

安全
编辑

请参见连接器安全

框架和源
编辑

此连接器是使用 Elastic 连接器框架构建的。

查看此连接器的源代码(分支8.17,与 Elastic 8.17 兼容)。

自管理连接器参考

编辑
查看自管理连接器参考
可用性和先决条件
编辑

此连接器可作为自管理自管理连接器使用。此自管理连接器与 Elastic 版本 8.10.0+ 兼容。要使用此连接器,请满足所有自管理连接器要求

兼容性
编辑

此连接器与以下各项兼容

  • Salesforce
  • Salesforce 沙箱
创建 Salesforce 连接器
编辑

使用 UI

编辑

要创建新的 Salesforce 连接器

  1. 在 Kibana UI 中,从主菜单导航至搜索 → 内容 → 连接器页面,或使用全局搜索字段
  2. 按照说明创建一个新的Salesforce 自管理连接器。

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API来创建一个新的自管理 Salesforce 自管理连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
});
console.log(response);
PUT _connector/my-salesforce-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Salesforce",
  "service_type": "salesforce"
}
您还需要为连接器创建 API 密钥 以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

要为连接器创建 API 密钥

  1. 运行以下命令,替换指示的值。请注意响应中的 encoded 返回值

    resp = client.security.create_api_key(
        name="connector_name-connector-api-key",
        role_descriptors={
            "connector_name-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "index_name",
                            ".search-acl-filter-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "connector_name-connector-api-key",
      role_descriptors: {
        "connector_name-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "connector_name-connector-api-key",
      "role_descriptors": {
        "connector_name-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 API 密钥 encoded 值更新您的 config.yml 文件。

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

用法
编辑

要将此连接器用作自管理连接器,请使用 Kibana UI 中的连接器工作流程。

有关其他操作,请参阅连接器使用方法

您需要创建启用了 OAuth2.0 的 Salesforce 连接应用程序才能使用 Salesforce 进行身份验证。

创建 Salesforce 连接的应用程序
编辑

Salesforce 连接器通过连接应用程序与 Salesforce 进行身份验证。有关配置用于 OAuth 2.0 客户端凭据流程的连接应用程序,请参阅 Salesforce 官方文档。

创建连接应用程序时,在标题为 API(启用 OAuth 设置)的部分中,确保启用以下设置

  • 启用 OAuth 设置
  • 启用设备流程

    • 回调 URL应为 Salesforce 虚拟回调 URL https://test.salesforce.com/services/oauth2/success
  • 需要 Web 服务器流程的密钥
  • 需要刷新令牌流程的密钥
  • 启用客户端凭据流程

应禁用所有其他选项。最后,在选定的 OAuth 范围部分中,包含以下 OAuth 范围

  • 通过 API 管理用户数据 (api)
  • 随时执行请求 (refresh_token, offline_access)
Salesforce 管理员要求
编辑

默认情况下,Salesforce 连接器需要全局管理员权限才能访问 Salesforce 数据。展开下面的部分,了解如何使用最少的权限创建自定义 Salesforce 用户。

创建具有最少权限的自定义 Salesforce 用户

通过从“设置”菜单创建具有足够权限的自定义配置文件,您可以删除从 Salesforce 中提取数据对系统管理员角色的要求。

要创建新的配置文件

  1. 从 Salesforce“设置”菜单中,转到管理 ⇒ 用户 ⇒ 配置文件
  2. 创建一个新的配置文件。
  3. 现有配置文件下拉列表中选择 只读标准用户。为配置文件命名并保存。

    默认情况下,只读标准用户 用户具有访问所有标准对象的读取权限。

  4. 编辑新创建的配置文件。在对象权限下,至少向您要提取到 Elasticsearch 中的标准对象和自定义对象分配 读取 权限。
  5. 确保新创建的配置文件至少具有以下标准对象的 读取 权限

    • 帐户
    • 市场活动
    • 案例
    • 联系人
    • 电子邮件消息
    • 潜在客户
    • 商机
    • 用户

      如果使用高级同步规则,则需要为配置文件中的特定对象分配 读取 权限。

  6. 转到用户 ⇒ 配置文件,并将新创建的配置文件分配给用户。
  7. 转到连接的应用程序,选择您的应用程序,然后选择编辑策略。在 Salesforce 中,将客户端凭据流分配给具有自定义配置文件的用户。

    现在,可以为该用户配置文件配置连接器以提取所有对象记录,而无需系统管理角色。

使用 Docker 部署
编辑

自管理连接器在您自己的基础设施上运行。

您可以使用 Docker 将 Salesforce 连接器部署为自管理连接器。按照以下说明进行操作。

步骤 1:下载示例配置文件

下载示例配置文件。您可以手动下载它或运行以下命令

curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml

如果您的目录名称不同,或者您想使用不同的配置文件名称,请记住更新 --output 参数值。

步骤 2:更新自管理连接器的配置文件

使用以下设置更新配置文件以匹配您的环境

  • elasticsearch.host
  • elasticsearch.api_key
  • connectors

如果您针对 Docker 化的 Elasticsearch 和 Kibana 版本运行连接器服务,则您的配置文件将如下所示

# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>

connectors:
  -
    connector_id: <CONNECTOR_ID_FROM_KIBANA>
    service_type: salesforce
    api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead

建议使用 elasticsearch.api_key 作为身份验证方法。但是,您也可以使用 elasticsearch.usernameelasticsearch.password 来对您的 Elasticsearch 实例进行身份验证。

注意:您可以通过简单地取消注释配置文件中的特定设置并修改其值来更改其他默认配置。

步骤 3:运行 Docker 镜像

使用以下命令使用连接器服务运行 Docker 镜像

docker run \
-v ~/connectors-config:/config \
--network "elastic" \
--tty \
--rm \
docker.elastic.co/enterprise-search/elastic-connectors:8.17.0.0 \
/app/bin/elastic-ingest \
-c /config/config.yml

有关更多详细信息,请参阅 elastic/connectors 存储库中的 DOCKER.md

官方注册表中查找所有可用的 Docker 镜像。

我们还有一个使用 Docker Compose 的快速入门自管理选项,因此您可以一次启动所有必需的服务:Elasticsearch、Kibana 和连接器服务。有关更多信息,请参阅 elastic/connectors 存储库中此README

配置
编辑

需要以下设置才能设置此连接器

domain(必需)
您的 Salesforce 帐户的域。这是显示在您的 Salesforce URL 中的子域。例如,如果您的 Salesforce URL 为 foo.my.salesforce.com,则您的域将为 foo。如果您使用的是 Salesforce 沙箱,则您的 URL 将包含一个额外的子域,并且类似于 foo.sandbox.my.salesforce.com。在这种情况下,您的域将为 foo.sandbox
client_id(必需)
由您的连接应用程序生成的客户端 ID。Salesforce 文档有时也会将其称为消费者密钥
client_secret(必需)
由您的连接应用程序生成的客户端密钥。Salesforce 文档有时也会将其称为消费者密钥
use_document_level_security

切换以启用文档级安全 (DLS)。可选,默认禁用。有关更多信息,包括如何设置各种 Salesforce 权限类型,请参阅DLS 部分

启用后

  • 完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。
  • 访问控制同步将提取用户的访问控制列表,并将其存储在单独的索引中。
查找客户端 ID 和客户端密钥
编辑

创建连接的应用程序后,客户端 ID 和客户端密钥不会自动显示给您。您可以通过执行以下步骤找到它们

  • 导航至设置
  • 转到平台工具 > 应用程序 > 应用程序管理器
  • 单击您的应用程序旁边的三角形,然后选择查看
  • 页面加载后,单击管理消费者详细信息

您的客户端 ID 和客户端密钥现在应在页面顶部可见。

文档级安全性 (DLS)
编辑

文档级安全性 (DLS) 使您可以根据用户的权限限制对文档的访问。此功能默认情况下可用于 Salesforce 连接器,并支持标准和自定义对象

Salesforce 允许用户通过以下方式设置权限

  • 配置文件
  • 权限集
  • 权限集组

有关指导,请参阅有关设置 Salesforce 权限的视频教程

要提取任何标准或自定义对象,用户必须确保至少将 读取 权限授予该对象。可以使用以下任何方法授予此权限来设置权限。

使用配置文件设置权限
编辑

有关通过配置文件设置权限的信息,请参阅Salesforce 文档

使用权限集设置权限
编辑

请参阅Salesforce 文档,了解如何通过权限集设置权限。

使用权限集组设置权限
编辑

请参阅Salesforce 文档,了解如何通过权限集组设置权限。

将配置文件、权限集和权限集组分配给用户
编辑

设置权限后,将简档、权限集或权限集组分配给用户。在 Salesforce 中按照以下步骤操作

  1. 导航到 用户 部分下的 管理
  2. 选择 用户,然后选择要设置权限的用户。
  3. 设置在先前步骤中创建的 简档权限集权限集组
同步规则
编辑

基本同步规则对于所有连接器都是相同的,并且默认情况下可用。

有关更多信息,请阅读同步规则

高级同步规则
编辑

高级同步规则生效需要进行完全同步

以下部分描述了此连接器的高级同步规则。高级同步规则允许在索引到 Elasticsearch 之前过滤 Salesforce 中的数据。

它们采用以下参数

  1. query:用于过滤文档的 Salesforce 查询。
  2. language:Salesforce 查询语言。允许的值为SOQLSOSL

基于指定的查询和语言获取文档

示例:使用 SOQL 查询获取文档

[
  {
    "query": "SELECT Id, Name FROM Account",
    "language": "SOQL"
  }
]

示例:使用 SOSL 查询获取文档。

[
  {
    "query": "FIND {Salesforce} IN ALL FIELDS",
    "language": "SOSL"
  }
]

使用 SOQL 和 SOSL 查询获取标准和自定义对象

示例:通过 SOQL 和 SOSL 查询获取标准对象的文档。

[
  {
    "query": "SELECT Account_Id, Address, Contact_Number FROM Account",
    "language": "SOQL"
  },
  {
    "query": "FIND {Alex Wilber} IN ALL FIELDS RETURNING Contact(LastModifiedDate, Name, Address)",
    "language": "SOSL"
  }
]

示例:通过 SOQL 和 SOSL 查询获取自定义对象的文档。

[
  {
    "query": "SELECT Connector_Name, Version FROM Connector__c",
    "language": "SOQL"
  },
  {
    "query": "FIND {Salesforce} IN ALL FIELDS RETURNING Connectors__c(Id, Connector_Name, Connector_Version)",
    "language": "SOSL"
  }
]

获取具有标准和自定义字段的文档

示例:获取 Account 对象的所有标准和自定义字段的文档。

[
  {
    "query": "SELECT FIELDS(ALL) FROM Account",
    "language": "SOQL"
  }
]

示例:获取 Connector 对象的所有自定义字段的文档。

[
  {
    "query": "SELECT FIELDS(CUSTOM) FROM Connector__c",
    "language": "SOQL"
  }
]

示例:获取 Account 对象的所有标准字段的文档。

[
  {
    "query": "SELECT FIELDS(STANDARD) FROM Account",
    "language": "SOQL"
  }
]
文档和同步
编辑

连接器会同步以下 Salesforce 对象

  • 账户
  • 市场活动
  • 案例
  • 联系人
  • 内容文档(上传到 Salesforce 的文件)
  • 潜在客户
  • 商机

连接器不会摄取它没有查询权限的任何对象。

  • 默认情况下,不会提取大于 10 MB 的文件中的内容。使用自托管的本地提取服务来处理更大的二进制文件。
  • 默认情况下,权限不会同步。您必须启用文档级安全。否则,索引到 Elastic 部署的所有文档对于所有有权访问该 Elastic 部署的用户都可见。
同步类型
编辑

默认情况下,所有连接器都支持完全同步

此连接器还支持增量同步

内容提取
编辑

如果内容文档满足以下条件,则连接器将从您的 Salesforce 来源检索它们

  • 附加到一个或多个已同步的对象
  • 属于可以提取的文件类型

这意味着连接器不会摄取任何未附加到受支持的 Salesforce 对象的“内容文档”。有关受支持的对象类型的列表,请参阅文档和同步

如果单个内容文档附加到多个受支持的对象,则只会为其创建一个 Elastic 文档。此文档将在 related_ids 字段中保留到每个与之连接的对象的链接。

有关内容提取的更多详细信息,请参见内容提取

已知问题
编辑
  • DLS 功能是“类型级别”而不是“文档级别”

    8.13.0 中添加的 Salesforce DLS 不适用于对特定 Salesforce 对象进行特定访问控制。相反,如果给定用户/组可以访问给定类型的任何对象(案例潜在客户商机等),则该用户/组将出现在该类型所有对象的 \_allow_access_control 列表中。有关更多详细信息,请参见 https://github.com/elastic/connectors/issues/3028

    有关所有连接器的已知问题列表,请参见连接器已知问题

安全
编辑

请参见连接器安全

框架和源代码
编辑

此连接器是使用 Elastic 连接器框架构建的。

查看此连接器的源代码(分支8.17,与 Elastic 8.17 兼容)。