配置
编辑配置编辑
可以通过以下属性自定义 elasticsearch-hadoop 的行为,通常是在目标作业的 Hadoop Configuration
上设置它们。但是,其中一些属性可以通过其他方式指定,具体取决于使用的库(请参阅相关部分)。
所有配置属性都以 es
前缀开头。命名空间 es.internal
由库保留供其内部使用,用户不应在任何时候使用它。
必需设置编辑
-
es.resource
- Elasticsearch 资源位置,用于读取和写入数据。需要格式
<index>/<type>
(相对于 Elasticsearch 主机/端口(请参阅下面)))。
es.resource = twitter/tweet # index 'twitter', type 'tweet'
-
es.resource.read
(默认为es.resource
) - 用于读取(但不写入)数据的 Elasticsearch 资源。在同一个作业中读取和写入不同 Elasticsearch 索引时很有用。通常自动设置(除了 Map/Reduce 模块,它需要手动配置)。
-
es.resource.write
(默认为es.resource
) - 用于写入(但不读取)数据的 Elasticsearch 资源。通常用于动态资源写入,或者在同一个作业中写入和读取不同 Elasticsearch 索引时使用。通常自动设置(除了 Map/Reduce 模块,它需要手动配置)。
请注意,在上述资源设置中指定多个索引和/或类型仅允许读取。仅通过使用动态资源(在下面描述)支持为写入指定多个索引。使用 _all/types
搜索所有索引中的types
,或使用 index/
搜索index
中的所有类型。请注意,读取多个索引/类型通常仅在它们具有相同结构且仅与某些库一起使用时才有效。需要强类型映射(例如像 Hive 或 SparkSQL 这样的表)的集成可能会失败。
动态/多资源写入编辑
对于写入,elasticsearch-hadoop 允许通过使用模式(使用 {<field-name>}
格式)在运行时解析目标资源,并根据流式传输到 Elasticsearch 的数据在运行时解析。也就是说,可以根据要保存的文档中解析的一个或多个字段,将文档保存到某个 index
或 type
中。
例如,假设以下文档集(这里在 JSON 中描述以提高可读性 - 随意将其转换为实际的 Java 对象)
{ "media_type":"game", "title":"Final Fantasy VI", "year":"1994" }, { "media_type":"book", "title":"Harry Potter", "year":"2010" }, { "media_type":"music", "title":"Surfing With The Alien", "year":"1987" }
要根据它们的 media_type
对它们中的每一个进行索引,可以使用以下模式
# index the documents based on their type es.resource.write = my-collection/{media_type}
这将导致 Final Fantasy VI
在 my-collection/game
下索引,Harry Potter
在 my-collection/book
下索引,Surfing With The Alien
在 my-collection/music
下索引。有关更多信息,请参阅专门的集成部分。
动态资源仅支持写入,对于执行多索引/类型读取,请使用适当的搜索查询.
格式化动态/多资源写入编辑
使用动态/多写入时,还可以指定字段返回的值的格式。开箱即用,elasticsearch-hadoop 提供了日期/时间戳字段的格式,这对于在同一索引下自动对基于时间的数据(例如日志)进行分组很有用。通过使用 Java SimpleDataFormat 语法,可以以区域设置敏感的方式格式化和解析日期。
例如,假设数据包含一个 @timestamp
字段,可以使用以下配置将文档分组到每日索引中
使用相同的配置属性(es.resource.write
),但是,通过特殊的 |
字符指定格式模式。有关支持的语法的更多信息,请参阅SimpleDateFormat javadocs。在这种情况下,yyyy.MM.dd
将日期转换为年份(由四位数字指定)、月份由两位数字指定,然后是日期由两位数字指定(例如 2015.01.28
)。
基本设置编辑
网络编辑
-
es.nodes
(默认 localhost) - 要连接到的 Elasticsearch 节点列表。在远程使用 Elasticsearch 时,请设置此选项。请注意,该列表不必包含 Elasticsearch 集群中的每个节点;这些节点默认情况下会由 elasticsearch-hadoop 自动发现(见下文)。每个节点还可以单独指定其 HTTP/REST 端口(例如
mynode:9600
)。 -
es.port
(默认 9200) - 用于连接到 Elasticsearch 的默认 HTTP/REST 端口 - 此设置应用于
es.nodes
中未指定任何端口的节点。
在 2.2 中添加。
-
es.nodes.path.prefix
(默认为空) - 要添加到对 Elasticsearch 发出的所有请求的前缀。在集群在某个路径下代理/路由的环境中很有用。例如,如果集群位于
someaddress:someport/custom/path/prefix
,则将es.nodes.path.prefix
设置为/custom/path/prefix
。
查询编辑
-
es.query
(默认无) -
保存用于从指定的
es.resource
读取数据的查询。默认情况下,它未设置/为空,这意味着将返回指定索引/类型下的所有数据。es.query
可以有三种形式
也就是说,这里有一个例子
# uri (or parameter) query es.query = ?q=costinl # query dsl es.query = { "query" : { "term" : { "user" : "costinl" } } } # external resource es.query = org/mypackage/myquery.json
换句话说,es.query
足够灵活,因此您可以使用您喜欢的任何搜索 api,无论是内联还是从外部资源加载。
我们建议使用在文件中外部化的查询 dsl,该文件包含在作业 jar 中(因此在它的类路径上可用)。这使得识别、调试和组织您的查询变得容易。在整个文档中,我们使用 uri 查询来节省文本并提高可读性 - 当用作 uri 时,现实生活中的查询很快就会变得难以处理。
操作编辑
-
es.input.json
(默认 false) - 输入是否已经是 JSON 格式(默认值)。有关直接使用 JSON 的更多详细信息,请参阅每个集成的相应部分。
-
es.write.operation
(默认 index) -
elasticsearch-hadoop 应该执行的写入操作 - 可以是以下任何一种
-
index
(默认值) - 添加新数据,同时替换现有数据(基于其 id)(重新索引)。
-
create
- 添加新数据 - 如果数据已存在(基于其 id),则会抛出异常。
-
update
- 更新现有数据(基于其 id)。如果找不到数据,则会抛出异常。
-
upsert
- 称为合并或插入(如果数据不存在),如果数据存在(基于其 id),则更新。
-
delete
- 删除现有数据(基于其 id)。如果找不到数据,则会抛出异常。
-
在 2.1 中添加。
-
es.output.json
(默认 false) - 连接器输出是否应为 JSON 格式(默认值)。启用后,文档将以原始 JSON 格式返回(与从 Elasticsearch 返回的格式相同)。有关直接使用 JSON 的更多详细信息,请参阅每个集成的相应部分。
在 5.0.0 中添加。
-
es.ingest.pipeline
(默认无) - 索引或创建文档时应定位的现有 Elasticsearch Ingest 管道的名称。仅在执行
index
和create
操作时可用;与update
或upsert
操作不兼容。
映射(写入 Elasticsearch 时)编辑
-
es.mapping.id
(默认无) - 包含文档 id 的文档字段/属性名称。
-
es.mapping.parent
(默认 none) - 包含文档父级的文档字段/属性名称。要指定常量,请使用
<CONSTANT>
格式。
在 5.6.0 中添加。
-
es.mapping.join
(默认 none) - 包含文档连接字段的文档字段/属性名称。不允许使用常量。文档上的连接字段必须包含父关系名称(作为字符串),或包含子关系名称及其父级 ID 的对象。如果在使用此设置时识别出子文档,则文档的路由将自动设置为父级 ID(如果在
es.mapping.routing
中未配置其他路由)。 -
es.mapping.routing
(默认取决于es.mapping.join
) - 包含文档路由的文档字段/属性名称。要指定常量,请使用
<CONSTANT>
格式。如果使用es.mapping.join
指定了连接字段,则默认为连接字段的父级 ID 的值。如果未指定连接字段,则默认为 none。 -
es.mapping.version
(默认 none) - 包含文档版本的文档字段/属性名称。要指定常量,请使用
<CONSTANT>
格式。 -
es.mapping.version.type
(默认取决于es.mapping.version
) - 指示使用的 版本类型。如果
es.mapping.version
未定义(默认),则其值为未指定。如果指定了es.mapping.version
,则其值变为external
。
在 6.0.0 中弃用。
-
es.mapping.ttl
(默认 none) - 包含文档生存时间的文档字段/属性名称。要指定常量,请使用
<CONSTANT>
格式。在 Elasticsearch 6.0+ 索引版本上不起作用,但对 5.x 索引版本及更低版本将继续支持。
在 6.0.0 中弃用。
-
es.mapping.timestamp
(默认 none) - 包含文档时间戳的文档字段/属性名称。要指定常量,请使用
<CONSTANT>
格式。在 Elasticsearch 6.0+ 索引版本上不起作用,但对 5.x 索引版本及更低版本将继续支持。
在 2.1 中添加。
-
es.mapping.include
(默认 none) - 要包含在发送到 Elasticsearch 的文档中的字段/属性。对于从实体中提取所需数据很有用。语法类似于 Elasticsearch include/exclude。可以使用逗号指定多个值。默认情况下,不指定任何值,这意味着包含所有属性/字段。
当指定 es.input.json
时,将忽略 es.mapping.include
功能。为了防止连接器索引隐式排除的数据,任何具有这些属性冲突的作业都将拒绝执行!
在 2.1 中添加。
-
es.mapping.exclude
(默认 none) - 要从发送到 Elasticsearch 的文档中排除的字段/属性。对于从实体中消除不需要的数据很有用。语法类似于 Elasticsearch include/exclude。可以使用逗号指定多个值。默认情况下,不指定任何值,这意味着不排除任何属性/字段。
当指定 es.input.json
时,将忽略 es.mapping.exclude
功能。为了防止连接器索引显式排除的数据,任何具有这些属性冲突的作业都将拒绝执行!
例如
# extracting the id from the field called 'uuid' es.mapping.id = uuid # specifying a parent with id '123' es.mapping.parent = <123> # combine include / exclude for complete control # include es.mapping.include = u*, foo.* # exclude es.mapping.exclude = *.description
使用上面的配置,每个条目将仅包含其顶层字段(以 u
开头)以及 foo
下的嵌套字段,除了任何名为 description
的嵌套字段。此外,文档父级将为 123
,而从字段 uuid
中提取的文档 ID。
字段信息(从 Elasticsearch 读取时)edit
在 2.1 中添加。
-
es.mapping.date.rich
(默认 true) - 是否为 Elasticsearch 中的
Date
字段创建丰富的Date
类对象,或者将它们作为基本类型(String
或long
)返回。默认情况下为 true。实际对象类型基于使用的库;值得注意的例外是 Map/Reduce,它没有提供内置的Date
对象,因此无论此设置如何,都会返回LongWritable
和Text
。
在 2.2 中添加。
-
es.read.field.include
(默认 empty) - 从 Elasticsearch 读取文档时解析并考虑的字段/属性。默认情况下为空,这意味着考虑所有字段。谨慎使用此属性,因为它可能产生不良副作用。通常用于某些返回的文档不符合预期映射的情况。
在 2.2 中添加。
-
es.read.field.exclude
(默认 empty) - 从 Elasticsearch 读取文档时丢弃的字段/属性。默认情况下为空,这意味着不排除任何字段。谨慎使用此属性,因为它可能产生不良副作用。通常用于某些返回的文档不符合预期映射的情况。
例如
# To exclude field company.income es.read.field.exclude = company.income
在 2.2 中添加。
-
es.read.field.as.array.include
(默认 empty) - 应视为数组/列表的字段/属性。由于 Elasticsearch 可以将一个或多个值映射到一个字段,因此 elasticsearch-hadoop 无法从映射中确定是否将文档上的字段视为单个值或数组。在遇到多个值时,elasticsearch-hadoop 会自动将字段读取到集成中的适当数组/列表类型中,但在严格映射场景(如 Spark SQL)中,这可能会导致问题(在 Spark 的 Catalyst 引擎期望单个值时遇到数组)。此设置的语法类似于 Elasticsearch include/exclude。可以使用逗号指定多个值。默认情况下,不指定任何值,这意味着没有字段/属性被视为数组。
并非所有字段都需要指定 es.read.field.as.array
来被视为数组。类型为 nested
的字段始终被视为对象数组,不应在 es.read.field.as.array.include
下标记。
例如,给定文档
{ "foo": { "bar": [ "abc", "def" ] } }
使用以下配置
# mapping foo.bar as an array es.read.field.as.array.include = foo.bar
如果您的文档包含多级数组
{ "foo": { "bar": [[["abc", "def"], ["ghi", "jkl"]], [["mno", "pqr"], ["stu", "vwx"]]] } }
然后在配置中指定数组的维数
# mapping foo.bar as a 3-level/dimensional array es.read.field.as.array.include = foo.bar:3
-
es.read.field.as.array.exclude
(默认 empty) - 不应视为数组/列表的字段/属性。类似于上面的
es.read.field.as.array.include
。可以使用逗号指定多个值。默认情况下,不指定任何值,这意味着不排除任何属性/字段(并且由于如上所述没有包含任何值),因此在预先处理之前,没有字段被视为数组。请注意,此设置不会影响嵌套字段,因为它们始终被视为数组。
元数据(从 Elasticsearch 读取时)edit
-
es.read.metadata
(默认 false) - 是否在结果中包含文档元数据(例如 ID 和版本)(默认)。
-
es.read.metadata.field
(默认 _metadata) - 放置元数据信息的字段。当
es.read.metadata
设置为 true 时,信息将作为指定字段下的Map
返回。 -
es.read.metadata.version
(默认 false) - 是否在返回的元数据中包含文档版本。仅在启用
es.read.metadata
时适用。
更新设置(写入 Elasticsearch 时)edit
使用 update
或 upsert
操作时,可以使用其他设置(反映 update API)
-
es.update.script.inline
(默认 none) - 用于更新文档的内联脚本。
在 6.0 中添加。
-
es.update.script.file
(默认 none) - 用于更新文档的文件脚本的名称。文件脚本在 6.x 中被删除,因此,如果针对 6.x 及更高版本的集群使用此属性,则会抛出错误。
在 6.0 中添加。
-
es.update.script.stored
(默认 none) - 用于更新文档的存储脚本的标识符。
-
es.update.script.lang
(默认 none) - 脚本语言。默认情况下,不指定任何值,应用节点配置。
-
es.update.script.params
(默认 none) - 脚本参数(如果有)。文档(当前读取)字段/属性,其值为使用。要指定常量,请使用
<CONSTANT>
格式。可以使用逗号 (,
) 指定多个值
例如
# specifying 2 parameters, one extracting the value from field 'number', the other containing the value '123': es.update.script.params = param1:number,param2:<123>
-
es.update.script.params.json
- 以
raw
、JSON 格式指定的脚本参数。指定的值按原样传递,没有任何进一步的处理或过滤。通常用于迁移现有的更新脚本。
例如
es.update.script.params.json = {"param1":1, "param2":2}
-
es.update.retry.on.conflict
(默认 0) - 在发生冲突的情况下,更新文档的重试次数。在并发环境中很有用。
高级设置edit
索引edit
-
es.index.auto.create
(默认 yes) - 是否应让 elasticsearch-hadoop 在将数据写入 Elasticsearch 时创建索引(如果缺少)或失败。
-
es.index.read.missing.as.empty
(默认 no) - elasticsearch-hadoop 是否允许读取不存在的索引(并返回空数据集)或不读取(并抛出异常)
-
es.field.read.empty.as.null
(默认 yes) - elasticsearch-hadoop 是否将空字段视为
null
。此设置通常不需要(因为 elasticsearch-hadoop 已经处理了 null 案例),但已启用以使处理尚未清理的文本字段更容易。 -
es.field.read.validate.presence
(默认 warn) -
为了帮助发现从 Hadoop 查询数据时可能出现的错误(这会导致返回不正确的数据),elasticsearch-hadoop 可以执行验证,发现丢失的字段和潜在的拼写错误。可能的值是
-
ignore
- 不执行验证
-
warn
- 如果验证失败,则会记录警告消息
-
strict
- 如果缺少字段,则会抛出异常,停止作业
-
默认值 (warn
) 将在作业启动时将任何拼写错误记录到控制台
WARN main mr.EsInputFormat - Field(s) [naem, adress] not found in the Elasticsearch mapping specified; did you mean [name, location.address]?
在 6.6 中添加。
-
es.read.shard.preference
(默认 none) - 在执行滚动查询时,用于搜索操作的碎片首选项的值。如果留空,连接器将自动感知何时使用
_local
碎片首选项。这在热/冷架构中最为有用,当您需要直接控制在哪些节点上执行搜索操作时
es.read.shard.preference = _only_nodes:abc*
Elasticsearch for Apache Hadoop 在运行之前不会尝试验证此首选项设置,并且配置不正确的碎片首选项可能会导致滚动查询失败,因为在提供首选项的情况下无法找到碎片。
-
es.read.source.filter
(默认 none) - 通常,当使用允许指定某种形式的模式(如 Hive)的集成时,连接器将自动从模式中提取字段名称,并仅从 Elasticsearch 请求这些字段,以节省带宽。当使用不利用任何数据模式的集成(如普通 MR 和 Spark)时,此属性允许您指定要从 Elasticsearch 返回的字段名称的逗号分隔字符串。
如果设置了es.read.source.filter
,则在连接器尝试向下推不同的源字段过滤时将抛出异常。在这些情况下,您应该清除此属性并相信连接器知道应该返回哪些字段。这发生在 SparkSQL 和 Hive 中。
User specified source filters were found [name,timestamp], but the connector is executing in a state where it has provided its own source filtering [name,timestamp,location.address]. Please clear the user specified source fields under the [es.read.source.filter] property to continue. Bailing out...
在 5.4 中添加。
-
es.index.read.allow.red.status
(默认值为 false) - 在执行从 Elasticsearch 读取数据的作业时,如果提供的读取资源包含一个索引,该索引缺少导致集群状态为
red
的分片,那么 ES-Hadoop 将通知您此状态并快速失败。在作业必须继续使用仍然可访问的剩余可用数据的情况下,用户可以启用此属性来指示连接器忽略它无法访问的分片。
使用es.index.read.allow.red.status
会导致作业在不完整的数据集上运行。针对红色集群执行的作业与针对完全绿色或黄色集群执行的作业相比,将产生不一致的结果。谨慎使用此设置。
输入edit
在 5.0.0 中添加。
-
es.input.max.docs.per.partition
- 从支持滚动切片的 Elasticsearch 集群(Elasticsearch v5.0.0 及更高版本)读取数据时,此参数会建议连接器每个输入分区应包含的最大文档数量。连接器将对每个要读取的分片上的文档数量进行采样和估计,并使用此属性提供的数值将每个分片划分为输入切片。此属性是一个建议,而不是保证。每个分区中的最终文档数量不能保证低于此数字,而是会接近此数字。如果您从不支持滚动切片的 Elasticsearch 集群(Elasticsearch v5.0.0 之前的任何版本)读取数据,则会忽略此属性。默认情况下,此值未设置,输入分区是根据要读取的索引中的分片数量计算的。
网络edit
-
es.nodes.discovery
(默认值为 true) - 是否发现 Elasticsearch 集群中的节点,或者只使用
es.nodes
中给出的节点进行元数据查询。请注意,此设置仅在启动时适用;之后,在读取和写入时,elasticsearch-hadoop 使用目标索引分片(及其托管节点),除非启用了es.nodes.client.only
。 -
es.nodes.client.only
(默认值为 false) - 是否使用 Elasticsearch 客户端节点(或负载均衡器)。启用后,elasticsearch-hadoop 将通过集群中的客户端节点路由所有请求(在节点发现后,如果已启用)。请注意,这通常会显着降低节点并行性,因此默认情况下处于禁用状态。启用它还会禁用
es.nodes.data.only
(因为客户端节点是非数据节点)。
在 2.1.2 中添加。
-
es.nodes.data.only
(默认值为 true) - 是否仅使用 Elasticsearch 数据节点。启用后,elasticsearch-hadoop 将通过集群中的数据节点路由所有请求(在节点发现后,如果已启用)。此配置设置的目的是避免压倒非数据节点,因为这些节点往往是“较小”的节点。默认情况下启用此设置。
在 5.0.0 中添加。
-
es.nodes.ingest.only
(默认值为 false) - 是否仅使用 Elasticsearch 摄取节点。启用后,elasticsearch-hadoop 将通过集群中的摄取节点路由所有请求(在节点发现后,如果已启用)。此配置设置的目的是避免为从非摄取节点发送到管道的數據产生转发成本;实际上,只有在将数据写入摄取管道时才有用(请参阅上面的
es.ingest.pipeline
)。
在 2.2 中添加。
-
es.nodes.wan.only
(默认值为 false) - 连接器是否针对云/受限环境中的 Elasticsearch 实例(通过 WAN,例如 Amazon Web Services)使用。在此模式下,连接器会禁用发现,并且仅通过声明的
es.nodes
连接所有操作,包括读取和写入。请注意,在此模式下,性能会严重受到影响。
在 2.2 中添加。
-
es.nodes.resolve.hostname
(默认值取决于情况) - 连接器是否应该将节点主机名解析为 IP 地址。默认情况下,它为
true
,除非启用了wan
模式(见上文),在这种情况下,它将默认为 false。
在 2.2 中添加。
-
es.http.timeout
(默认值为 1m) - 与 Elasticsearch 建立 HTTP/REST 连接的超时时间。
-
es.http.retries
(默认值为 3) - 建立(断开的)http 连接的重试次数。重试适用于与 Elasticsearch 节点的每次对话。重试次数耗尽后,连接将自动重新路由到下一个可用的 Elasticsearch 节点(基于
es.nodes
的声明,然后是发现的节点 - 如果已启用)。 -
es.scroll.keepalive
(默认值为 10m) - 查询请求之间结果滚动的最大持续时间。
-
es.scroll.size
(默认值为 1000) - 每个执行器/工作器/任务在每个滚动请求中返回的结果/项目/文档数量。
在 2.2 中添加。
-
es.scroll.limit
(默认值为 -1) - 每个单独滚动返回的总结果/项目数量。负值表示应返回所有匹配的文档。请注意,这适用于每个滚动,每个滚动通常绑定到一个作业任务。因此,返回的文档总数为
LIMIT * NUMBER_OF_SCROLLS (OR TASKS)
-
es.action.heart.beat.lead
(默认值为 15s) - 在 elasticsearch-hadoop 通知 Hadoop 任务仍在运行以防止任务重启之前,任务超时的时间。
在 5.3.0 中添加。
设置 HTTP 请求标头edit
-
es.net.http.header.[HEADER-NAME]
- 通过使用
es.net.http.header.
前缀,您可以为从 elasticsearch-hadoop 到 Elasticsearch 的所有请求提供 HTTP 标头。请注意,某些标准 HTTP 标头被连接器保留,以确保正确操作,用户无法设置或覆盖这些标头(例如Accept
和Content-Type
)。
例如,这里用户正在设置Max-Forwards
HTTP 标头
es.net.http.header.Max-Forwards = 10
安全设置edit
在 6.4 中添加。
-
es.keystore.location
- 安全设置密钥库文件的路径(通常是 URL,没有前缀则被解释为类路径条目)。有关更多信息,请参阅安全设置。
在 2.1 中添加。
基本身份验证edit
-
es.net.http.auth.user
- 基本身份验证用户名
-
es.net.http.auth.pass
- 可安全设置。基本身份验证密码
在 2.1 中添加。
SSLedit
-
es.net.ssl
(默认值为 false) - 启用 SSL
-
es.net.ssl.keystore.location
- 密钥库(如果使用)路径(通常是 URL,没有前缀则被解释为类路径条目)
-
es.net.ssl.keystore.pass
- 可安全设置。密钥库密码
-
es.net.ssl.keystore.type
(默认值为 JKS) - 密钥库类型。PK12 是一种常见的替代格式
-
es.net.ssl.truststore.location
- 信任库路径(通常是 URL,没有前缀则被解释为类路径条目)
-
es.net.ssl.truststore.pass
- 可安全设置。信任库密码
-
es.net.ssl.cert.allow.self.signed
(默认值为 false) - 是否允许自签名证书
-
es.net.ssl.protocol
(默认值为 TLS) - 要使用的 SSL 协议
代理edit
-
es.net.proxy.http.host
- Http 代理主机名
-
es.net.proxy.http.port
- Http 代理端口
-
es.net.proxy.http.user
- Http 代理用户名
-
es.net.proxy.http.pass
- 可安全设置。Http 代理密码
-
es.net.proxy.http.use.system.props
(默认值为 yes) - 是否使用系统 Http 代理属性(即
http.proxyHost
和http.proxyPort
)
在 2.2 中添加。
-
es.net.proxy.https.host
- Https 代理主机名
在 2.2 中添加。
-
es.net.proxy.https.port
- Https 代理端口
在 2.2 中添加。
-
es.net.proxy.https.user
- Https 代理用户名
在 2.2 中添加。
-
es.net.proxy.https.pass
- 可安全设置。Https 代理密码
在 2.2 中添加。
-
es.net.proxy.https.use.system.props
(默认值为 yes) - 是否使用系统 Https 代理属性(即
https.proxyHost
和https.proxyPort
) -
es.net.proxy.socks.host
- Http 代理主机名
-
es.net.proxy.socks.port
- Http 代理端口
-
es.net.proxy.socks.user
- Http 代理用户名
-
es.net.proxy.socks.pass
- 可安全设置。Http 代理密码
-
es.net.proxy.socks.use.system.props
(默认值为 yes) - 是否使用系统 Socks 代理属性(即
socksProxyHost
和socksProxyHost
)
elasticsearch-hadoop 允许仅将其连接应用于代理设置。当已经存在 JVM 范围的代理设置(通常通过系统属性)时,请格外小心,以避免出现意外行为。重要提示:这些属性的语义在 JVM 文档中进行了描述。在某些情况下,将 JVM 属性java.net.useSystemProxies
设置为true
比手动设置这些属性效果更好。
序列化edit
-
es.batch.size.bytes
(默认值为 1mb) - 使用 Elasticsearch 批量 API 进行批量写入的大小(以字节为单位)。请注意,批量大小是为每个任务实例分配的。始终乘以 Hadoop 作业中的任务数量,以获得在运行时命中 Elasticsearch 的总批量大小。
-
es.batch.size.entries
(默认值为 1000) - 使用 Elasticsearch bulk API 批量写入的条目大小(以条目为单位) - (0 表示禁用)。与
es.batch.size.bytes
相辅相成,一旦其中一个匹配,就会执行批量更新。类似于大小,此设置是 *每个任务* 实例的;它在运行时乘以正在运行的 Hadoop 任务总数。 -
es.batch.write.refresh
(默认值为 true) - 是否在完成批量更新后调用 索引刷新。请注意,这仅在整个写入(意味着多个批量更新)执行后才会调用。
-
es.batch.write.retry.count
(默认值为 3) - 如果 Elasticsearch 过载且数据被拒绝,则对给定批次进行重试的次数。请注意,只有被拒绝的数据才会被重试。如果在执行完重试后仍然有数据被拒绝,则 Hadoop 作业将被取消(并失败)。负值表示无限次重试;在设置此值时要小心,因为它可能会产生意想不到的副作用。
-
es.batch.write.retry.wait
(默认值为 10 秒) - 由于批量拒绝而导致的批量写入重试之间等待的时间。
-
es.ser.reader.value.class
(默认值为 *取决于使用的库*) - 用于将 JSON 转换为对象的
ValueReader
实现的名称。这由框架根据使用的库(Map/Reduce、Hive 等)设置。 -
es.ser.writer.value.class
(默认值为 *取决于使用的库*) - 用于将对象转换为 JSON 的
ValueWriter
实现的名称。这由框架根据使用的库(Map/Reduce、Hive 等)设置。