spark配置elasticsearch属性汇总(基于es7)

必要设置

es.resource

Elasticsearch资源位置,在该位置读取和写入数据。需要格式 <index>/<type>

es.resource.read(默认为es.resource)

用于读取(但不写入)数据的Elasticsearch资源。在同一作业中将数据读取和写入不同的Elasticsearch索引时很有用。通常自动设置(“ Map / Reduce”模块除外,该模块需要手动配置)。

es.rource.write(默认为es.resource)

用于写入(但不读取)数据的Elasticsearch资源。通常用于动态资源写入或在同一作业中向不同的Elasticsearch索引写入和读取数据时使用。通常自动设置(需要手动配置的Map / Reduce模块除外)。

网络

es.nodes (默认本地主机)

要连接的Elasticsearch节点列表。远程使用Elasticsearch时,请设置此选项。请注意,列表中没有必须包含每一个的Elasticsearch集群内的节点; 默认情况下,这些是由elasticsearch-hadoop自动发现的(请参见下文)。每个节点还可以分别指定其HTTP / REST端口(例如mynode:9600)。

es.port (默认为9200)

用于连接到Elasticsearch的默认HTTP / REST端口-此设置适用于es.nodes未指定任何端口的节点。

es.nodes.path.prefix (默认为none)

添加到对Elasticsearch的所有请求中的前缀。在群集以特定路径代理/路由的环境中很有用。例如,如果群集位于someaddress:someport/custom/path/prefix,则将设置es.nodes.path.prefix为/custom/path/prefix。

查询方式

es.query (默认无)

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

uri query
使用表格uri_query,可以指定查询字符串。注意开头。

query dsl
使用表单query_dsl-请注意,查询dsl需要以此处开头{和结尾,}如下所述

external resource
如果以上两个都不匹配,elasticsearch-hadoop将尝试将参数解释为HDFS文件系统中的路径。如果不是这种情况,它将尝试从类路径或从Hadoop加载资源(如果失败)DistributedCache。资源应包含uri query或query dsl。

操作方式

es.input.json (默认为false)

输入是否已经为JSON格式(默认)。有关直接使用JSON的更多详细信息,请参见每个集成的相应部分。

es.write.operation (默认index)

应该执行弹性搜索-hadoop的写操作-可以是以下任意一种:

index (默认)
添加新数据,同时替换(重新索引)现有数据(基于其ID)。

create
添加新数据-如果数据已经存在(基于其ID),则会引发异常。

update
更新现有数据(基于其ID)。如果找不到数据,则引发异常。

upsert
如果数据不存在,则 称为合并或插入;如果数据存在(根据其ID),则更新。

es.output.json (默认为false)

连接器的输出是否应为JSON格式(默认)。启用后,文档以原始JSON格式返回(从Elasticsearch返回)。有关直接使用JSON的更多详细信息,请参见每个集成的相应部分。

es.ingest.pipeline (默认无)

索引或创建文档时应作为目标的现有Elasticsearch Ingest管道的名称。只有当这样做可index和create操作; 与update或upsert操作不兼容。

映射(在写入Elasticsearch时)

es.mapping.id (默认none)

包含文档ID的文档字段/属性名称。

es.mapping.parent (默认none)

包含文档父级的文档字段/属性名称。要指定常量,请使用格式。

es.mapping.join (默认none)

包含文档联接字段的文档字段/属性名称。常量不被接受。文档上的联接字段必须包含作为字符串的父关系名称,或包含子关系名称及其父ID的对象。如果在使用此设置时标识了子文档,则如果未在中配置其他路由,则文档的路由将自动设置为父ID es.mapping.routing。

es.mapping.routing(默认取决于es.mapping.join)

包含文档路径的文档字段/属性名称。要指定常量,请使用格式。如果使用指定了连接字段es.mapping.join,则默认为连接字段的父ID的值。如果未指定连接字段,则默认为无。

es.mapping.version (默认none)

包含文档版本的文档字段/属性名称。要指定常量,请使用格式。
es.mapping.version.type(默认取决于es.mapping.version)
指示使用的版本控制类型。如果es.mapping.version未定义(默认),则其值未指定。如果es.mapping.version指定,则其值为external。

es.mapping.ttl (默认none)

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

es.mapping.timestamp (默认none)

包含文档时间戳记的文档字段/属性名称。要指定常量,请使用格式。在Elasticsearch 6.0+索引版本上将不起作用,但是将继续支持5.x索引版本及更低版本。

es.mapping.include (默认none)

要包含在发送给Elasticsearch的文档中的字段/属性。从实体中提取所需的数据很有用。语法类似于Elasticsearch include / exclude的语法。可以使用逗号指定多个值。默认情况下,未指定任何值,表示包括所有属性/字段。
指定es.mapping.include时es.input.json将忽略该功能。为了防止连接器索引隐式排除的数据,具有这些属性冲突的任何作业都将拒绝执行!

es.mapping.exclude (默认none)

发送到Elasticsearch的文档中要排除的字段/属性。对于从实体中删除不需要的数据很有用。语法类似于Elasticsearch include / exclude的语法。可以使用逗号指定多个值。默认情况下,未指定任何值,表示不排除任何属性/字段。
指定es.mapping.exclude时es.input.json将忽略该功能。为了防止连接器索引显式排除的数据,具有这些属性冲突的任何作业都将拒绝执行!

字段信息(从Elasticsearch中读取时)

es.mapping.date.rich (默认为true)

是为Elasticsearch中的字段创建丰富的 Date类似对象,Date还是将它们作为原语(String或long)返回。默认情况下,这是正确的。实际的对象类型基于所使用的库。noteable例外是地图/减少其提供没有内置Date对象,因此 LongWritable和Text无论此设置被返回。

es.read.field.include (默认为none)

从Elasticsearch读取文档时解析并考虑的字段/属性。默认情况下为空,表示将考虑所有字段。请谨慎使用此属性, 因为它可能会产生不良的副作用。通常用于某些返回文档不适合预期映射的情况。

es.read.field.exclude (默认为none)

从Elasticsearch读取文档时丢弃的字段/属性。默认情况下为空,表示不排除任何字段。请谨慎使用此属性, 因为它可能会产生不良的副作用。通常用于某些返回文档不适合预期映射的情况。

es.read.field.as.array.include (默认为none)

应视为数组/列表的字段/属性。由于Elasticsearch可以将一个或多个值映射到一个字段,因此elasticsearch-hadoop无法从映射中确定是实例化一个值还是数组类型(取决于库类型)。当遇到多个值时,elasticsearch-hadoop将自动使用数组/列表类型,但在严格的映射方案(如Spark SQL)中,这可能会导致意外的模式更改。语法类似于Elasticsearch include / exclude的语法。可以使用逗号指定多个值。默认情况下,未指定任何值,这意味着不包含任何属性/字段。

es.read.field.as.array.exclude (默认为none)

不应视为数组/列表的字段/属性。与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时)

一种使用update或upsert操作的附加设置(与更新 API相似)可用:

es.update.script.inline (默认none)

用于更新文档的内联脚本。

es.update.script.file (默认none)

用于更新文档的文件脚本的名称。在6.x中删除了文件脚本,因此,如果将其用于6.x及更高版本的群集,则此属性将引发错误。

es.update.script.stored (默认none)

用于更新文档的存储脚本的标识符。

es.update.script.lang (默认none)

脚本语言。默认情况下,未指定应用节点配置的值。

es.update.script.params (默认none)

脚本参数(如果有)。使用值的文档(当前已读取)字段/属性。要指定常量,请使用格式。可以通过逗号(,) 指定多个值

es.update.script.params.json

以rawJSON格式指定的脚本参数。指定的值将按原样传递,而无需任何进一步的处理或过滤。通常用于迁移现有的更新脚本。

es.update.retry.on.conflict (默认为0)

发生冲突时重试文档更新的次数。在并发环境中很有用。

高级

es.index.auto.create (默认true)

将数据写入Elasticsearch或失败时,elasticsearch-hadoop是否应创建索引(如果缺少索引)。

es.index.read.missing.as.empty (默认false)

elasticsearch-hadoop是否允许读取不存在的索引(并返回空数据集)或不允许(并引发异常)

es.field.read.empty.as.null (默认true)

elasticsearch-hadoop是否会将空字段视为null。通常不需要此设置(因为elasticsearch-hadoop已经处理了null情况),但是启用了此设置可以更轻松地处理尚未清除的文本字段。

es.field.read.validate.presence (默认warn)

为了帮助找出从Hadoop查询数据时可能出现的错误(这会导致返回错误的数据),elasticsearch-hadoop可以执行验证以发现缺失的字段和潜在的错别字。可能的值为:

ignore
没有执行验证

warn
如果验证失败,则会记录一条警告消息

strict
如果缺少字段,则会引发异常,从而停止工作
warn作业开始时,默认()会将任何输入错误记录到控制台:

es.read.shard.preference (默认none)

执行滚动查询时用于搜索操作的分片首选项的值。如果保留为空,则连接器将自动检测何时使用分片_local首选项。当您需要直接控制在哪些节点上执行搜索操作时,这在热/冷体系结构中最有用:

es.read.source.filter (默认none)

通常,当使用允许指定某种形式的架构(例如Hive)的集成时,连接器将自动从架构中提取字段名称,并仅从Elasticsearch请求这些字段以节省带宽。当使用不利用任何数据模式(例如常规MR和Spark)的集成时,此属性允许您指定一个逗号分隔的字段名称字符串,您希望从Elasticsearch返回。
如果es.read.source.filter设置为,则在连接器尝试下推其他源字段筛选的情况下,将引发异常。在这些情况下,您应该清除此属性,并相信连接器知道应返回哪些字段。这在SparkSQL,Hive中以及在Pig中指定架构时发生。

es.index.read.allow.red.status (默认为false)

当执行从Elasticsearch读取的作业时,如果为读取提供的资源中包含缺少碎片的索引,这些碎片导致群集的状态为 red,则ES-Hadoop将通知您此状态并快速失败。在作业必须继续使用仍然可以访问的剩余可用数据的情况下,用户可以启用此属性来指示连接器忽略它无法到达的碎片。
使用es.index.read.allow.red.status可能导致作业在不完整的数据集上运行。与针对完全绿色或黄色群集执行的作业相比,针对红色群集执行的作业将产生不一致的结果。请谨慎使用此设置。

es.input.max.docs.per.partition

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

网络

es.nodes.discovery (默认为true)

是在Elasticsearch集群中发现节点,还是仅使用给定es.nodes的元数据查询节点。请注意,此设置仅在启动期间适用;之后,在读写时,除非es.nodes.client.only启用,否则elasticsearch-hadoop会使用目标索引分片(及其托管节点)。

es.nodes.client.only (默认为false)

是否使用Elasticsearch 客户端节点(或负载均衡器)。启用后,elasticsearch-hadoop将通过集群内的客户端节点路由其所有请求(发现节点后,如果启用)。请注意,这通常会大大降低节点并行度,因此默认情况下将其禁用。启用它也会禁用(因为客户端节点是非数据节点)。 es.nodes.data.only

es.nodes.data.only (默认为true)

是否仅使用Elasticsearch 数据节点。启用后,elasticsearch-hadoop将通过集群内的数据节点路由其所有请求(在发现节点后,如果启用)。此配置设置的目的是避免使非数据节点不堪重负,因为它们往往是“较小”的节点。默认情况下启用。

es.nodes.ingest.only (默认为false)

是否仅使用Elasticsearch接收节点。当启用时,elasticsearch-的Hadoop将路由所有通过它的请求(节点后发现,如果使能)摄取集群中的节点。此配置设置的目的是避免招致从非摄取节点转发用于管道的数据的成本;仅在将数据写入Ingest Pipeline时才真正有用(请参见es.ingest.pipeline上文)。

es.nodes.wan.only (默认为false)

该连接器是否用于WAN等云/受限环境中的Elasticsearch实例,例如Amazon Web Services。在这种模式下,连接器禁用发现,并且仅es.nodes在所有操作(包括读写)期间通过声明的连接。请注意,在此模式下,性能会受到很大 影响。

es.nodes.resolve.hostname (有条件默认值false)

连接器是否应将节点主机名解析为IP地址。默认情况下,true除非wan启用了模式(请参见上文),否则它将默认为false。

es.http.timeout (默认为1m)

HTTP / REST连接到Elasticsearch的超时。

es.http.retries (默认为3)

建立(断开的)http连接的重试次数。重试适用于与Elasticsearch节点的每次对话。重试耗尽后,连接将自动重新引至下一个可用的Elasticsearch节点(基于的声明es.nodes,后跟发现的节点-如果启用)。

es.scroll.keepalive (默认10m)

结果的最大持续时间在查询请求之间滚动。

es.scroll.size (默认为50)

每个请求每个人返回的结果/项目数。

es.scroll.limit (默认为-1)

每个单独的滚动返回 的总结果/项目数。负值表示应返回所有匹配的文档。请注意,这适用于通常绑定到其中一项任务的每个滚动。因此,返回的文档总数为LIMIT * NUMBER_OF_SCROLLS (OR TASKS)

es.acad (默认15s)

在Elasticsearch-hadoop通知Hadoop任务仍在运行以防止任务重新启动之前,导致任务超时。

设置HTTP请求头

es.net.http.header.[HEADER-NAME]

通过使用es.net.http.header.前缀,您可以为所有来自elasticsearch-hadoop对Elasticsearch的请求提供HTTP标头。请注意,一些标准的HTTP标头的连接器保留以确保正确操作,不能由用户设置或覆盖(Accept并Content-Type为实例)。

安全设定

es.keystore.location

安全设置密钥库文件的位置(通常是一个URL,不带前缀,它将被解释为类路径条目)。

es.net.http.auth.user

基本身份验证用户名

es.net.http.auth.pass

安全可靠。基本验证密码

SSL协议

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(默认true)

是否使用系统的Http代理属性(即http.proxyHost和http.proxyPort)

es.net.proxy.https.host

HTTPS代理主机名

es.net.proxy.https.port

HTTPS代理端口

es.net.proxy.https.user

Https代理用户名

es.net.proxy.https.pass

安全可靠。HTTPS代理密码

es.net.proxy.https.use.system.props(默认true)

是否使用系统的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(默认true)

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

序列化

es.batch.size.bytes (默认为1mb)

使用Elasticsearch 批量 API的批量写入的大小(以字节为单位)。请注意,批量大小是按任务实例分配的。始终乘以Hadoop作业中的任务数,以在运行时达到Elasticsearch的总批量大小。

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 (默认10s)

由批量拒绝引起的批写入重试之间等待的时间。

es.ser.reader.value.class(默认值取决于所使用的库)

ValueReader用于将JSON转换为对象 的实现的名称。这是由框架根据所使用的库(Map / Reduce,Hive,Pig等)设置的。

es.ser.writer.value.class(默认值取决于所使用的库)

ValueWriter用于将对象转换为JSON 的实现的名称。这是由框架根据所使用的库(Map / Reduce,Hive,Pig等)设置的。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值