必要設置
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等)設置的。