使用SSL配置的Elastic4s Elastic Search无法正常工作

时间:2019-07-17 07:00:21

标签: apache-spark elasticsearch ssl https elastic4s

下面是我用来在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

1 个答案:

答案 0 :(得分:1)

我对elastic4s进行的研究很少,并得出结论,它支持SSL但不支持身份验证(使用Search Guard)。因此,我编写了自己的Scala方法,以通过弹性搜索执行所有必需的操作。 运行良好。

我的GitHub链接如下:

https://github.com/NikhilSuthar/ScalaES