部署数据库连接器

本指南适用于 Google Cloud Search 数据库连接器管理员,即任何负责获取、部署、配置和维护数据库连接器的人员。

本指南介绍了如何执行与连接器部署相关的关键任务,具体包括以下内容:

  • 下载 Cloud Search 数据库连接器软件
  • 配置连接器以用于特定的 SQL 数据源
  • 运行该连接器

为了便于您理解本文档中提及的概念,建议您先熟悉数据库概念、结构化查询语言 (SQL)、访问控制列表 (ACL) 基础知识以及 Windows 或 Linux 操作系统。

对于 G Suite 管理员在将 Google Cloud Search 映射到数据库连接器时必须执行的任务,本指南并未涉及。如需了解这些任务,请参阅管理第三方数据源

Google Cloud Search 数据库连接器概览

默认情况下,Cloud Search 可以从 G Suite 数据(如文档和工作表)中查找所需内容、将其编入索引,并提供给用户。但是,您可以使用 Google Cloud Search 数据库连接器扩大 Cloud Search 的查找范围,使其能够从您自己的数据库存储区中查找所需内容并将其编入索引。

该连接器会将索引请求上传到 Cloud Search Indexing API,并定期将整个数据库重新编入索引,使 Cloud Search 索引与第三方数据库存储区保持同步。

Cloud Search 数据库连接器支持使用 ACL 控制用户对搜索结果中文档的访问权限。如需详细了解此主题,请参阅访问控制列表选项

连接器行为

作为连接器管理员,您可以通过创建配置文件控制 Cloud Search 数据库连接器的行为。在此文件中,您需要定义连接器的以下几个主要方面的行为:

  • 访问目标数据库
  • 识别可搜索的内容
  • 执行遍历
  • 遵循遍历时间表
  • 将 SQL 查询发送到数据库以检索记录
  • 严格遵守访问控制列表 (ACL)

若想使连接器执行特定的行为,请在配置文件中为您要自定义的每个配置参数填充键/值对。如需详细了解此过程,请参阅配置数据库连接器

配置文件填充完毕后,您就有了部署该连接器所需的设置。

数据库内容索引

Cloud Search 数据库连接器部署后,会与您连接到 G Suite 帐号的数据源进行通信,并通过遍历过程查找该数据源的内容。在遍历期间,该连接器会向存储区发出 SQL Select 查询来检索文档数据。检索到文档数据后,该连接器会将这些数据上传到 Indexing API,由此编入索引并最终提供给您的用户。

首先,数据库连接器会执行一次完全遍历,在此期间它会读取每条数据库记录并将其编入索引。之后,您可以定期安排完全遍历。除了完全遍历之外,如果数据库支持,您也可以安排增量遍历。增量遍历只会读取经过修改的数据库记录,并将其重新编入索引。

连接器设置

只要 Cloud Search 数据库连接器可以访问互联网和数据库,您就可以在几乎任何能运行 Java 应用的环境中安装和运行该连接器。由于数据库连接器与 Google Cloud Search 或数据存储区分别部署在不同的主机上,因此您必须首先确保自己拥有将 Google Cloud Search、连接器和数据存储区关联起来所需的 G Suite 和数据库信息。要让该连接器能够访问数据库,您需要在配置步骤(如本文档的连接器行为中所述)中向该连接器提供特定的信息。

要设置该连接器对 Cloud Search 的访问权限,您需要服务帐号、服务帐号 ID 和数据源 ID,并按照配置文件示例中的说明,将数据源 ID 和服务帐号私钥文件的路径添加到连接器配置中。一般来说,G Suite 网域管理员可以为您提供这些凭据。

确保您的环境设置正确后,即可开始执行部署步骤

支持的数据库

Cloud Search 数据库连接器适用于任何具有 JDBC 4.0 或更高版本兼容驱动程序的 SQL 数据库,具体如下所示:

  • MS SQL Server(2008、2012、2014、2016)
  • Oracle(11g、12c)
  • Google Cloud SQL
  • MySQL

在连接器配置过程中,您需要提供用于标识目标数据库的信息。如需了解详情,请参阅数据库访问权限

部署数据库连接器前的准备工作

在部署 Cloud Search 数据库连接器之前,请确保您的环境具备以下所有必需组件:

  • G Suite 私钥(包含服务帐号 ID)
  • G Suite 数据源 ID
  • 安装在主机上的数据库连接器 .jar 文件
  • 支持的目标数据库
  • 用于访问数据库的 JDBC 驱动程序(需要单独下载和安装)

部署步骤

要部署 Cloud Search 数据库连接器,请执行以下基本步骤:

  1. 下载并保存 Cloud Search 数据库连接器软件
  2. 配置 Cloud Search 数据库连接器
  3. 运行 Cloud Search 数据库连接器

第 1 步:下载并保存数据库连接器软件

  1. 从 GitHub 克隆相应连接器代码库。
    $ git clone https://github.com/google-cloudsearch/database-connector.git
        $ cd database-connector
  2. 检出所需的连接器版本:
    $ git checkout tags/v1-0.0.3
  3. 构建该连接器。
    $ mvn package
    如需在构建连接器时跳过测试,请使用 mvn package -DskipTests
  4. 将连接器 zip 文件复制到本地安装目录并将其解压缩:
    $ cp target/google-cloudsearch-database-connector-v1-0.0.3.zip installation-dir
        $ cd installation-dir
        $ unzip google-cloudsearch-database-connector-v1-0.0.3.zip
        $ cd google-cloudsearch-windows-filesystems-connector-v1-0.0.3

第 2 步:配置数据库连接器

为确保该连接器正确访问数据库并将相关内容编入索引,您必须先创建其配置文件。

要创建配置文件,请执行以下操作:

  1. 打开您选择的文本编辑器。
  2. 将键/值对添加到文件内容中。如需获取指导,请参阅配置文件示例
  3. 为配置文件命名。

    您可以为配置文件指定任何名称,例如 Mysql.properties。Google 建议使用 .properties.config ,以确保配置文件扩展名的命名规范保持一致。

您可以使用命令行指定配置文件路径,因此不需要标准文件位置。但是,建议将配置文件保存在该连接器所在的同一目录中,以便于跟踪和运行该连接器。

为确保该连接器能够识别您的配置文件,请使用命令行指定其路径。否则,该连接器将使用本地目录中的 connector-config.properties 作为默认文件名。如需了解如何使用命令行指定配置路径,请参阅运行数据库连接器

配置文件示例

以下示例配置文件展示了如何使用参数键值对来定义示例连接器的行为。如果未在配置文件中定义参数值,则许多参数都会使用默认值。

#
    # data source access
    api.sourceId=1234567890abcdef
    api.identitySourceId=0987654321lmnopq
    api.serviceAccountPrivateKeyFile=./PrivateKey.json
    #
    # database access
    db.url=jdbc:mysql://localhost:3306/mysql_test
    db.user=root
    db.password=passw0rd
    #
    # traversal SQL statements
    db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book
    db.incrementalUpdateSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book where change_timestamp > ?
    #
    # schedule traversals
    schedule.traversalIntervalSecs=36000
    schedule.performTraversalOnStart=true
    schedule.incrementalTraversalIntervalSecs=3600
    #
    # column definitions
    db.allColumns=customer_id, first_name, last_name, phone, change_timestamp
    db.uniqueKeyColumns=customer_id
    url.columns=customer_id
    #
    # content fields
    contentTemplate.db.title=customer_id
    db.contentColumns=customer_id, first_name, last_name, phone
    #
    # setting ACLs to "entire domain accessible"
    defaultAcl.mode=fallback
    defaultAcl.public=true
    

如需详细了解每个参数,请参阅配置参数参考

第 3 步:运行数据库连接器

以下示例假定所需组件位于 Linux 系统的本地目录中。

要使用命令行运行该连接器,请输入以下命令:

java \
       -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \
       com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \
       -Dconfig=mysql.config
    

详细的命令说明如下:

  • google-cloud-search-database-connector-v1-0.0.3.jar 是数据库连接器 .jar 文件
  • mysql-connector-java-5.1.41-bin.jar 是用于访问数据库的 SQL 驱动程序
  • mysql.config 是配置文件

该连接器会尽早尝试检测各种配置错误。例如,如果某数据库列被定义为记录内容的一部分,但数据库的 SQL 查询中缺少该数据库列,则连接器将在初始化时检测到这个错误。

但是,对于无效的 SQL 语句语法等其他错误,该连接器只能在第一次遍历期间尝试访问数据库时检测到。

配置参数参考

以下部分详细介绍了各配置参数。在这些部分中,内嵌示例采用以下格式:

=

其中“”(粗体)是特定参数的文字名称,“”(斜体)是该参数的特定值。

数据源访问权限

每个配置文件首先必须指定访问 Cloud Search 数据源所必需的参数。如何了解如何设置数据源,请参阅管理第三方数据源

设置 参数
数据源 ID api.sourceId = 1234567890abcdef

必填。由 G Suite 管理员设置的 Cloud Search 源 ID。

身份源 ID api.identitySourceId = 0987654321lmnopq

使用外部用户和群组时为必填项。由 G Suite 管理员设置的 Cloud Search 身份源 ID。

服务帐号 api.serviceAccountPrivateKeyFile = ./PrivateKey.json

必填。G Suite 管理员为访问连接器而创建的 Cloud Search 服务帐号密钥文件。

数据库访问权限

要让连接器能够遍历数据库,您必须先标识数据库的路径并提供允许连接器登录数据库的凭据。请使用以下数据库访问权限参数向配置文件添加访问权限信息。

设置 参数
数据库网址 db.url = jdbc:mysql://127.0.0.1/dbname

必填。要访问的数据库的完整路径。

数据库用户名和密码 db.user = dbadmin
db.password = pas5w0rd

必填。连接器用于访问数据库的有效用户名和密码。此数据库用户必须对要读取的数据库的相关记录拥有读取访问权限。

JDBC 驱动程序 db.driverClass = oracle.jdbc.OracleDriver

仅在类路径中尚未指定 JDBC 4.0 版驱动程序时才属于必填项。

配置遍历 SQL 语句

连接器通过执行遍历来访问数据库记录并将其编入索引。为使连接器能够遍历数据库记录,您必须在配置文件中提供 SQL Select 查询。连接器支持下列两类遍历方法:

连接器会根据您在配置文件的时间安排选项中定义的时间表执行这些遍历,如下面的安排遍历部分所述。

完全遍历

完全遍历会读取按配置应编入索引的所有数据库记录。如果您希望 Cloud Search 将新记录编入索引,并为现有的全部记录重新编制索引,必须使用完全遍历。

设置 参数
完全遍历 db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee

db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee ORDER BY key OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY

必填。此示例包括一个 SQL Select 查询,该查询会读取员工数据库中的所相关记录以编入索引。

按偏移量使用分页时,SQL 查询必须使用一个占位符(“?”),用于表示行偏移量(从零开始)。每次完全遍历都会多次执行此查询,直到不返回任何结果为止。

db.allRecordsSql.pagination = offset

有效的分页选项如下:

  • none:不使用分页
  • offset:按行偏移量使用分页

无论用量多少(如内容、唯一 ID、ACL),连接器将要使用的每一个列名称都必须包含在此查询中。连接器在启动时会执行一些初步验证,以检测是否存在错误和遗漏。为此,请勿使用常规的“SELECT * FROM …”查询。

分页示例

要按偏移量指定分页,并将完全遍历分解为多次查询,请运行以下命令:
# For SQL Server 2012 or Oracle 12c (standard SQL 2008 syntax)
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY key OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY
    db.allRecordsSql.pagination = offset
    

# For MySQL or Google Cloud SQL
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY key LIMIT 1000 OFFSET ?
    db.allRecordsSql.pagination = offset
    

增量遍历

默认情况下,连接器不会执行增量遍历。但是,如果数据库包含用于指示已修改记录的时间戳字段,您可以配置连接器执行增量遍历,这种遍历只会读取新修改和最近加入的数据库记录并将其重新编入索引。由于增量遍历读取的数据集规模较小,因此执行效率比完全遍历更高。

增量遍历参数用于定义遍历的范围,以及用于标识新增或最近修改的数据库记录的数据库时间戳。

设置 参数
增量遍历 db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time as timestamp_column from employee where last_update_time > ?

使用增量遍历时为必填项。要跟踪上次更新时间对应的数据库时间戳列,请将 timestamp_column 添加到 SQL 语句中;否则,请使用连接器遍历的当前时间戳。

示例 SQL Select 查询会读取所有发生了修改且必须重新编入索引的记录。

该查询必须使用一个占位符“?”,用于表示连接器在多次增量遍历 SQL 查询之间跟踪和维护的时间戳值。

默认情况下,连接器会存储增量查询的开始时间,以用于后续的增量遍历。如果之前没有执行过任何增量遍历,则使用连接器的开始执行时间。

第一次增量遍历完成后,Cloud Search 会存储该时间戳,以便连接器重新启动后能够访问先前的增量遍历时间戳。

数据库时区 db.timestamp.timezone = America/Los_Angeles

指定用于数据库时间戳的时区。默认值是连接器运行所在位置的本地时区。

安排遍历

时间安排参数用于确定连接器执行遍历操作的频率。

设置 参数
在指定时间间隔后执行完全遍历 schedule.traversalIntervalSecs = 7200

指定两次遍历操作之间的时间间隔(以秒为单位)。默认值为 86400(一天所包含的秒数)。

在连接器启动时执行完全遍历 schedule.performTraversalOnStart = false

指定每个连接器在启动时应立即执行 (true) 还是不应执行 (false) 第一次完全遍历。默认值为 true

在指定时间间隔后执行增量遍历 schedule.incrementalTraversalIntervalSecs = 900

指定两次遍历操作之间的时间间隔(以秒为单位)。默认值为 300(5 分钟所包含的秒数)。如果未定义增量遍历 SQL,则不使用此参数。

列定义

为使连接器能够访问数据库记录并将其编入索引,您必须在配置文件中提供有关列定义的信息。此外,连接器还会在启动时使用这些列定义来检测是否存在配置错误。

设置 参数
所有列 db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url

必填。标明访问数据库时 SQL 查询所需的所有列。查询必须显式引用使用此参数定义的列。所有其他的列定义参数都根据这一组列进行验证。

唯一键列 db.uniqueKeyColumns = customer_id
db.uniqueKeyColumns = last_name, first_name

必填。列出包含唯一值的单个数据库列,或列出其值的组合定义了唯一 ID 的多个列。

Cloud Search 要求每个可搜索的文档在数据源中具有唯一标识符。因此,每条数据库记录都必须能够使用其列值来定义唯一 ID。如果在多个独立的数据库上运行多个连接器,但要将索引编入一个公共数据集,请特别注意要提供适用于所有文档的唯一 ID。

网址列 url.format = https://www.example.com/{0}

定义视图网址的格式。带编号的参数按顺序引用在 db.columns 中指定的列(从零开始)。

如果未指定网址列,则默认值为“{0}”

url.columns = customer_id

必填。指定列的有效定义名称,这些列用于可点击搜索结果的网址。如果数据库中没有与每条数据库记录关联的网址,可以为每条记录使用一个静态链接。

但是,如果列值确实为每条记录定义了有效链接,则应指定视图网址列和格式配置值。

url.columnsToEscape = customer_id

指定 db.columns 中的列,这些列的值将先进行百分比编码,然后再添加到带格式的网址字符串中。

网址列示例

要指定使用的列和视图网址的格式,请执行以下操作:

# static URL not using any database record values
    url.format = https://www.example.com
    url.columns = customer_id
    

# single column value that is the view URL
    url.format = {0}
    url.columns = customer_url
    

# single column value that will be substituted into the view URL at position {0}
    url.format = https://www.example.com/customer/id={0}
    url.columns = customer_id
    url.columnsToEscape = customer_id
    

# multiple column values used to build the view URL (columns are order dependent)
    url.format = {1}/customer={0}
    url.columns = customer_id, linked_url
    url.columnsToEscape = customer_id
    

元数据配置参数

元数据配置参数描述用于填充项元数据的数据库列。如果配置文件不包含这些参数,系统将使用默认值。下表显示了这些参数。
设置 参数
标题 itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
包含与文档标题对应的值的元数据特性。默认值为空字符串。
网址 itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
包含文档网址搜索结果值的元数据特性。
创建时间戳 itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
包含文档创建时间戳值的元数据特性。
上次修改时间 itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17
包含文档上次修改时间戳值的元数据特性。
文档语言 itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
待编入索引的文档使用的内容语言。
架构对象类型 itemMetadata.objectType=movie
连接器使用的对象类型,如创建并注册架构所述。如果未指定此属性,连接器不会将任何结构化数据编入索引。

如果适用,应在配置所定义的 SQL 查询中指定此架构对象的属性。这通常可以通过向 SQL 语句添加别名来实现。例如,假设对于电影数据库,数据源架构包含一个名为“ActorName”的属性定义,在这种情况下 SQL 语句可以采用以下格式:select …, last_name as ActorName, … from …

与架构对象中的属性名称匹配的所有列都将自动与已编入索引的数据库记录一起传递,并在数据源中用作结构化数据。

注意:此配置属性指向一个值,而不是一个元数据特性,并且不支持 .field.defaultValue 后缀。

日期时间格式

日期时间格式指定元数据特性中应采用的格式。如果配置文件不包含此参数,系统将使用默认值。下表显示了此参数。
设置 参数
日期时间格式 structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
一份包含多种 java.time.format.DateTimeFormatter 模式的英文分号分隔列表。在解析元数据或架构中的任何日期或日期时间字段的字符串值时,系统将使用这些格式。虽然默认值为空列表,但始终支持 RFC 3339 格式和 RFC 1123 格式。

内容字段

将数据库记录值编入 Cloud Search 索引的好处是可以搜索这些内容。可使用内容选项来定义哪些记录值应成为可搜索的内容。

设置 参数
内容数据列 db.contentColumns = customer_id, first_name, last_name

指定数据库中的内容列。被指定为内容列的所有列均会带有格式,并作为可搜索的文档内容上传到 Cloud Search。

如果您未指定值,则系统将使用默认值“*”,表示所有列都应用作内容列。

内容模板列 contentTemplate.db.title = customer_id

必填。内容数据列会带有格式并根据内容模板编入索引。此模板可定义用于搜索的每个数据列值的优先级。最高质量的列定义是必填的“标题”列。

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low = employee_id

您可以将其他所有内容列指定为高、中或低搜索质量字段。未定义为特定类别的任何内容列均默认为低搜索质量字段。

Blob 列 db.blobColumn = blob_data

指示用于文档内容而不是内容列组合的单个 Blob 列的名称。

如果同时指定 Blob 列和内容列,系统会将 Blob 列视为错误。但是,元数据和结构化数据列定义仍然可以与 Blob 列一起使用。

访问控制列表选项

有多种 ACL 选项用于保护用户对已编入索引的记录的访问。

设置 参数
整个网域 defaultAcl.mode = override
defaultAcl.public = true

有效模式包括:

  • none:不使用默认 ACL
  • fallback:仅当没有 ACL 存在时才使用默认 ACL
  • append:将默认 ACL 添加到现有 ACL
  • override:使用默认 ACL 替换现有 ACL

如果 defaultAcl.mode 被设置为 override,并且 defaultAcl.public 被设置为 true,则这些参数指定“整个网域”的访问权限,即所有已编入索引的数据库记录都可由网域中的所有用户公开访问。模式值用于确定何时应用公共 ACL。

如果 defaultAcl.mode 被设置为 none,则在没有定义个别 ACL 的情况下,记录将是不可搜索的。

公共定义 ACL defaultAcl.mode = fallback
defaultAcl.public = false
defaultAcl.readers.users = user1, user2,
google:user3
defaultAcl.readers.groups = google:group1, group2
defaultAcl.denied.users = user4, user5
defaultAcl.denied.groups = group3

如果设置了所有这些参数,则整个集合指定要用于每条数据库记录的“公共定义”ACL(如果该数据库记录没有单独的 ACL 定义)。此公共 ACL 用于根据所选模式控制对整个数据库的访问。

除非前缀为“google:”(文字常量),否则假定每个用户和群组都是本地网域定义的用户/群组。

单独 ACL 如果配置参数指定了单独 ACL,则每条记录的列值中都会包含自身的 ACL 信息。

如果每条数据库记录都包含用于其自身可访问性的单独 ACL 信息,则 SQL 查询必须预留文字常量列别名,以便连接器知道如何检索“读取者”和“被拒”用户。如果 SQL 查询中预留了以下文字,则不需要其他配置。

readers_users

readers_groups

denied_users

denied_groups

单独的 ACL SQL 查询示例

以下示例显示了使用“单独”ACL 的 SQL Select 查询:

db.allRecordsSql = select customer_id, first_name, last_name,  employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee

    db.incrementalUpdateSql = select customer_id, first_name, last_name,  employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee where last_update_time > ?
    

快速参考

下表列出了与数据库连接器相关的最重要的必填参数和可选参数,以及它们的默认值。

参数 说明
db.driverClass 默认值:空字符串

连接器的 JDBC 驱动程序:

db.driverClass = oracle.jdbc.OracleDriver

db.url 必填

设置数据库网址:

db.url = jdbc:mysql://localhost:3306/dbname
db.user 默认值:空字符串

连接器用于查询数据库的数据库用户:

db.user = dbadmin

db.password 默认值:空字符串

连接器用于查询数据库的数据库用户的密码:

db.password = pas5w0rd
db.allRecordsSql 必填

定义 SQL 查询以检索与数据库记录相关的所有列:

db.allRecordsSql = select customer_id, first_name, last_name, employee_id, interesting_field from employee
db.allRecordsSql.pagination 默认值:none

指定以下分页选项之一:

  • none:不使用分页
  • offset:按行偏移量使用分页

db.allRecordsSql.pagination = offset

db.incrementalUpdateSql 默认值:已停用(空字符串)

增量遍历查询,通常根据文档的时间戳检索最近更改的文档:

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

db.timestamp.timezone 默认值:使用相同的时区(空字符串)

如果数据库服务器和连接器不属于同一时区,则指定数据库服务器的时区:

db.timestamp.timezone = America/Los_Angeles
schedule.
traversalIntervalSecs
默认值:86400(一天所包含的秒数)

完全遍历间隔 - 连接器的 traversal() 方法按以下时间表调用:

schedule.traversalIntervalSecs = 7200
schedule.
performTraversalOnStart
默认值:true

在启动时调用完全遍历:

schedule.performTraversalOnStart = false
schedule.
incrementalTraversalIntervalSecs
默认值:300

对已修改记录调用的两次连续增量遍历之间间隔的秒数(需要 db.updataSql):

schedule.incrementalTraversalIntervalSecs = 900
db.allColumns 必填

主 SQL 查询中将在其他任何列定义中使用的所有列名和别名:

db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url
db.uniqueKeyColumns 必填

由英文逗号分隔的一个或多个列标题名称(格式为 name:type),用于为数据库查询结果提供唯一标识符:

db.uniqueKeyColumns = customer_id
url.format 默认值:{0}

指定网址列的格式:

url.format = https://www.example.com/employee/id={0}
url.columns 必填

指定将用于为搜索结果创建可查看网址的 SQL 查询列:

url.columns = customer_id
url.columnsToEscape 默认值:空字符串

指定 db.columns 中的列,这些列的值将先进行百分比编码,然后再添加到带格式的网址字符串中:

url.columnsToEscape = customer_id
itemMetadata.title.field 默认值:空字符串

指定将用于元数据“标题”的记录列:

itemMetadata.title.field = customer_id
itemMetadata.createTime.field 默认值:空字符串

指定将用于元数据“创建日期”的记录列:

itemMetadata.createTime.field = created_timestamp
itemMetadata.updatetime.field 默认值:空字符串

指定将用于元数据“修改日期”的记录列:

itemMetadata.updatetime.field = last_update_time
itemMetadata.contentLanguage.field 默认值:空字符串

指定将用于元数据“语言”的记录列:

itemMetadata.contentLanguage.field = language_used
itemMetadata.objectType 默认值:空字符串

指定将用于架构“对象”的记录列。注意:这是文字名称而不是列值:

itemMetadata.objectType = schema_object_name
db.contentColumns 默认值:*(表示 db.allRecords.Sql 中的所有列)

定义将用于检索数据库记录内容的 SQL 查询列:

db.contentColumns = customer_id, first_name, last_name
contentTemplate.db.title 必填

指定内容 HTML 标题和最高搜索质量字段:

contentTemplate.db.title = id
contentTemplate.db.quality.high 默认值:空字符串

指定被赋予高搜索质量值的内容字段:

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium 默认值:空字符串

指定被赋予中等搜索质量值的内容字段:

contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low 默认值:所有未指定搜索质量级别的字段均默认为低搜索质量值

指定被赋予低搜索质量值的内容字段:

contentTemplate.db.quality.low = employee_id
db.blobColumn 默认值:空字符串

指定数据库使用单个 BLOB 列作为记录内容:

db.blobColumn=blob_data
defaultAcl.mode 默认值:none

指定以下 ACL 模式之一:

  • none:不使用默认 ACL
  • fallback:仅当没有 ACL 存在时才使用默认 ACL
  • append:将默认 ACL 添加到现有 ACL
  • override:使用默认 ACL 替换现有 ACL

defaultAcl.mode = override

defaultAcl.public 默认值:false

指定用于整个存储区的默认 ACL 是公共 ACL:

defaultAcl.public=true
defaultAcl.readers.users 仅在 defaultAcl.mode 被设置为 fallback defaultAcl.public 被设置为 false 时使用。

以英文逗号分隔列表的形式指定公共 ACL 读取者:

defaultAcl.readers.users=user1,user2,user3
defaultAcl.readers.groups 仅在 defaultAcl.mode 被设置为 fallback defaultAcl.public 被设置为 false 时使用。

以英文逗号分隔列表的形式指定公共 ACL 群组读取者:

defaultAcl.readers.groups=group1,group2
defaultAcl.denied.users 仅在 defaultAcl.mode 被设置为 fallback defaultAcl.public 被设置为 false 时使用。

指定被拒绝访问整个存储区的用户:

defaultAcl.denied.users=user4,user5
defaultAcl.denied.groups 仅在 defaultAcl.mode 被设置为 fallback 且 defaultAcl.public 被设置为 false 时使用

指定允许访问整个存储区的群组:

defaultAcl.denied.groups=group3
defaultAcl.name 默认值:DEFAULT_ACL_VIRTUAL_CONTAINER

指定应用默认 ACL 的虚拟容器的名称:

defaultAcl.name = employee-db-default-acl
api.defaultRequestMode 默认值:SYNCHRONOUS

指定遍历使用同步更新模式(相对于异步更新):

api.defaultRequestMode = ASYNCHRONOUS
traverse.exceptionHandler 默认值:0

指定遍历是应忽略异常(“ignore”)、发现异常即中止(“0”),还是在遇到 # 次异常后再中止(“10”):

traverse.exceptionHandler = ignore