配置

编辑

可以通过以下属性自定义 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 的数据在运行时解析。也就是说,可以根据即将保存的文档中解析的一个或多个字段,将文档保存到特定的 indextype

例如,假设以下文档集(此处以 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 字段,可以使用以下配置将文档分组到每日索引中

# index the documents based on their date
es.resource.write = my-collection/{@timestamp|yyyy.MM.dd} 

@timestamp 字段格式 - 在这种情况下为 yyyy.MM.dd

使用相同的配置属性(es.resource.write),但是,通过特殊的 | 字符指定格式模式。有关支持的语法的更多信息,请参阅SimpleDateFormat javadocs。在这种情况下,yyyy.MM.dd 将日期转换为年份(用四位数字指定)、月份(用两位数字指定)和日期(用两位数字指定)(例如 2015.01.28)。

Logstash 用户会发现此模式非常熟悉

重要设置

编辑

网络

编辑
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 发出的所有请求的 prefix。在集群在特定路径下被代理/路由的环境中很有用。例如,如果集群位于 someaddress:someport/custom/path/prefix,则应将 es.nodes.path.prefix 设置为 /custom/path/prefix

查询

编辑
es.query(默认为无)

保存用于从指定的 es.resource 读取数据的查询。默认情况下,它未设置/为空,这意味着返回指定索引/类型下的所有数据。es.query 可以有三种形式

uri 查询
使用 ?uri_query 形式,可以指定查询字符串。请注意开头的 ?
查询 DSL
使用 query_dsl 形式 - 请注意,如此处所述,查询 DSL 需要以 { 开头并以 } 结尾
外部资源
如果上述两者都不匹配,elasticsearch-hadoop 将尝试将参数解释为 HDFS 文件系统中的路径。如果不是这种情况,它将尝试从类路径加载资源,如果失败,则从 Hadoop DistributedCache 加载。该资源应包含 uri 查询query dsl

为此,这是一个示例

# 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 管道的名称。仅在执行 indexcreate 操作时可用;与 updateupsert 操作不兼容。

映射(写入 Elasticsearch 时)

编辑
es.mapping.id(默认为无)
包含文档 ID 的文档字段/属性名称。
es.mapping.parent(默认为无)
包含文档父级的文档字段/属性名称。要指定常量,请使用 <CONSTANT> 格式。

在 5.6.0 中添加。

es.mapping.join(默认为无)
包含文档连接字段的文档字段/属性名称。不接受常量。文档上的连接字段必须包含父关系名称作为字符串,或者包含子关系名称及其父级的 ID 的对象。如果在使用此设置时识别出子文档,则如果 es.mapping.routing 中未配置其他路由,则文档的路由将自动设置为父级 ID。
es.mapping.routing(默认为取决于 es.mapping.join
包含文档路由的文档字段/属性名称。要指定常量,请使用 <CONSTANT> 格式。如果使用 es.mapping.join 指定连接字段,则默认为连接字段的父级 ID 的值。如果没有指定连接字段,则默认为无。
es.mapping.version(默认为无)
包含文档版本的文档字段/属性名称。要指定常量,请使用 <CONSTANT> 格式。
es.mapping.version.type(默认为取决于 es.mapping.version
指示版本控制类型。如果 es.mapping.version 未定义(默认),则其值为未指定。如果指定了 es.mapping.version,则其值变为 external

在 6.0.0 中弃用。

es.mapping.ttl(默认为无)
包含文档生存时间的文档字段/属性名称。要指定常量,请使用 <CONSTANT> 格式。在 Elasticsearch 6.0+ 索引版本上不起作用,但将继续支持 5.x 及更低版本的索引。

在 6.0.0 中弃用。

es.mapping.timestamp(默认为无)
包含文档时间戳的文档字段/属性名称。要指定常量,请使用<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,而文档 ID 从字段uuid中提取。

字段信息(从 Elasticsearch 读取时)

编辑

在 2.1 中添加。

es.mapping.date.rich(默认值:true)
是否为 Elasticsearch 中的Date字段创建*丰富的*Date对象,或者将其作为基本类型(Stringlong)返回。默认情况下为 true。实际的对象类型取决于使用的库;值得注意的例外是 Map/Reduce,它没有内置的Date对象,因此无论此设置如何,都会返回LongWritableText

在 2.2 中添加。

es.read.field.include(默认值:empty)
从 Elasticsearch 读取文档时进行解析并考虑的字段/属性。默认值为 empty,这意味着考虑所有字段。谨慎使用此属性,因为它可能产生不良副作用。通常用于某些返回的文档不符合预期映射的情况。

在 2.2 中添加。

es.read.field.exclude(默认值:empty)
从 Elasticsearch 读取文档时丢弃的字段/属性。默认值为 empty,这意味着不排除任何字段。谨慎使用此属性,因为它可能产生不良副作用。通常用于某些返回的文档不符合预期映射的情况。

例如

# 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 读取时)

编辑
es.read.metadata(默认值:false)
是否在结果中包含文档元数据(例如 ID 和版本)或不包含(默认值)。
es.read.metadata.field(默认值:_metadata)
放置元数据信息的字段。当es.read.metadata设置为 true 时,信息将作为指定字段下的Map返回。
es.read.metadata.version(默认值:false)
是否在返回的元数据中包含文档版本。仅当启用es.read.metadata时才适用。

更新设置(写入 Elasticsearch 时)

编辑

使用updateupsert操作时,可以使用其他设置(与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)
发生冲突时重试更新文档的次数。在并发环境中非常有用。

高级设置

编辑

索引

编辑
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可能会导致作业在不完整的数据集上运行。与针对完全绿色或黄色集群执行的作业相比,针对红色集群执行的作业将产生不一致的结果。谨慎使用此设置。

输入

编辑

在 5.0.0 中添加。

es.input.max.docs.per.partition
从支持滚动切片的 Elasticsearch 集群(Elasticsearch v5.0.0 及更高版本)读取数据时,此参数会建议连接器每个输入分区中的文档最大数量应是多少。连接器将对要读取的每个分片上的文档数量进行采样和估计,并使用此属性提供的值将每个分片划分为输入切片。此属性是一个建议,而不是保证。每个分区中的最终文档数量不能保证低于此数字,而是接近此数字。如果您从不支持滚动切片的 Elasticsearch 集群(Elasticsearch v5.0.0 以下的任何版本)读取数据,则会忽略此属性。默认情况下,此值未设置,并且输入分区是根据要读取的索引中的分片数量计算的。

网络

编辑
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 ingest 节点。启用后,elasticsearch-hadoop 将(在启用节点发现后)通过集群中的ingest 节点路由其所有请求。此配置设置的目的是避免因从非 ingest 节点转发意图用于管道的数产生额外开销;仅当将数据写入 Ingest Pipeline 时才真正有用(请参见上面的 es.ingest.pipeline)。

在 2.2 中添加。

es.nodes.wan.only(默认值 false)
连接器是否用于针对云/受限环境中通过广域网 (WAN) 的 Elasticsearch 实例,例如 Amazon Web Services。在此模式下,连接器将禁用发现,并且在所有操作(包括读写)期间通过声明的 es.nodes 进行连接。请注意,在此模式下,性能会严重受到影响。

在 2.2 中添加。

es.nodes.resolve.hostname(默认值取决于情况)
连接器是否应将节点主机名解析为 IP 地址。默认情况下为 true,除非启用了 wan 模式(见上文),在这种情况下,它将默认为 false。

在 2.2 中添加。

es.http.timeout(默认值 1 分钟)
与 Elasticsearch 建立 HTTP/REST 连接的超时时间。
es.http.retries(默认值 3)
建立(断开的)http 连接的重试次数。重试适用于与 Elasticsearch 节点的每次会话。重试次数用尽后,连接将自动重新路由到下一个可用的 Elasticsearch 节点(基于 es.nodes 的声明,然后是已发现的节点 - 如果已启用)。
es.scroll.keepalive(默认值 10 分钟)
查询请求之间结果滚动的最大持续时间。
es.scroll.size(默认值 1000)
每个滚动请求在每个执行器/工作程序/任务上返回的结果/项目/文档数量。

在 2.2 中添加。

es.scroll.limit(默认值 -1)
每个单独滚动返回的结果/项目数。负值表示应返回所有匹配的文档。请注意,这适用于每个滚动,通常绑定到一个作业任务。因此,返回的文档总数为 LIMIT * NUMBER_OF_SCROLLS (OR TASKS)
es.action.heart.beat.lead(默认值 15 秒)
在 elasticsearch-hadoop 通知 Hadoop 任务仍在运行以防止任务重启之前的任务超时前导时间。

在 5.3.0 版本中添加。

设置 HTTP 请求头

编辑
es.net.http.header.[HEADER-NAME]
使用 es.net.http.header. 前缀,您可以为 elasticsearch-hadoop 向 Elasticsearch 发出的所有请求提供 HTTP 头。请注意,连接器保留一些标准 HTTP 头以确保正确操作,用户无法设置或覆盖这些头(例如 AcceptContent-Type)。

例如,这里用户正在设置 Max-Forwards HTTP 头

es.net.http.header.Max-Forwards = 10

安全设置

编辑

在 6.4 版本中添加。

es.keystore.location
安全设置密钥库文件的路径(通常是 URL,没有前缀则解释为类路径条目)。有关更多信息,请参阅 安全设置

在 2.1 中添加。

基本身份验证

编辑
es.net.http.auth.user
基本身份验证用户名
es.net.http.auth.pass
可保护的。基本身份验证密码

在 2.1 中添加。

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 协议

代理

编辑
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.proxyHosthttp.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.proxyHosthttps.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 代理属性(即 socksProxyHostsocksProxyHost)。

elasticsearch-hadoop 仅允许使用上述设置将代理设置应用于其连接。当已经存在 JVM 范围的代理设置(通常通过系统属性)时,请格外小心,以避免出现意外行为。重要提示:这些属性的语义在 JVM 文档中进行了描述。在某些情况下,将 JVM 属性 java.net.useSystemProxies 设置为 true 比手动设置这些属性效果更好。

序列化

编辑
es.batch.size.bytes(默认值 1MB)
使用 Elasticsearch 批量 API 进行批量写入的大小(以字节为单位)。请注意,批量大小是每个任务实例分配的。始终将运行时影响 Elasticsearch 的总批量大小乘以 Hadoop 作业中的任务数。
es.batch.size.entries(默认值 1000)
使用 Elasticsearch 批量 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 等)设置。