apache-spark - 配置了 ssl 的 elastic4s 弹性搜索不起作用
问题描述
下面是我用来从elasticsearch
spark scala 代码中访问索引数据的脚本。它运行良好。
import com.sksamuel.elastic4s.http.{ElasticClient, ElasticProperties}
import com.sksamuel.elastic4s.http.ElasticDsl._
val esUrl = "http://" + <ip> + ":" + <port>
val client = ElasticClient(ElasticProperties(esUrl))
val response = client.execute(
deleteIn(Index/Type).by(matchQuery(indexField, values))
)
现在我已将 ES 配置为 SSL 并尝试访问相同的数据,但它不起作用,因为我需要在此处传递 SSL 详细信息。所以我通过了下面的 url 但它给出了无效的 url 错误。
https://user:pass@<ip>:<port>?ssl=true"
或者
https://user:pass@<ip>:<port>"
您能否帮我更改此脚本,以便它也可以与 SSL 配置的 ES 一起使用?
我也尝试过使用HttpClient
,ElasticClient
但它不起作用并给出如下奇怪的错误:
scala> import com.sksamuel.elastic4s.http.HttpClient
import com.sksamuel.elastic4s.http.HttpClient
scala> val esUrl = "elasticsearch://user:pass@<ip>:<port>?ssl=true"
esUrl: String = elasticsearch://user:pass@<ip>:<port>?ssl=true
scala> val client = HttpClient(ElasticsearchClientUri(esUrl))
<console>:43: error: not found: value HttpClient
我想用ElasticClient
它。如果我错过了什么,请告诉我。
请注意:我使用的是以下版本:
火花 - 2.4.3
弹性搜索 - 6.2.4
elastic4s - 6.3.3
斯卡拉 - 2.11
解决方案
我对 elastic4s 的研究很少,得出的结论是它支持 SSL 但不支持身份验证(使用 Search Guard)。因此,我编写了自己的 Scala 方法来执行所有必需的 Elastic Search 操作。它运行良好。
我的 GitHub 链接如下:
https://medium.com/@n.suthar.online/scalaes-apache-spark-and-elasticsearch-connector-d6bc927f8c51
推荐阅读
- javascript - w2ui.Grid 中的自定义标题和组标题
- asp.net-core-webapi - 忽略 .NET core 2.2 WebAPI 中响应对象的任何特定大小写
- intellij-idea - Does the flow plugin work with remote debugging in Intellij?
- javascript - 是否可以在解构之前检查对象是否可用?
- javascript - 在 React 中处理基本文档文件下载的最佳方式是什么?
- pandas - Seaborn 和/或 Matplotlib 正在对我的 X 轴进行分组。如何阻止它被分组
- angular - 使用管道的角度递归模板
- c++ - 这种广度优先搜索的实现有什么问题?
- node.js - MongoError:拓扑已关闭,请连接
- javascript - http post request params 包含空数组值,将被 axios 删除