下面是我用来在Spark Scala代码中从elasticsearch
访问索引数据的脚本。运行良好。
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
ElasticSearch-6.2.4
弹性4s-6.3.3
scala-2.11
答案 0 :(得分:1)
我对elastic4s进行的研究很少,并得出结论,它支持SSL但不支持身份验证(使用Search Guard)。因此,我编写了自己的Scala方法,以通过弹性搜索执行所有必需的操作。 运行良好。
我的GitHub链接如下: