首页 > 解决方案 > 配置了 ssl 的 elastic4s 弹性搜索不起作用

问题描述

下面是我用来从elasticsearchspark 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 一起使用?

我也尝试过使用HttpClientElasticClient但它不起作用并给出如下奇怪的错误:

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

标签: apache-sparkelasticsearchsslhttpselastic4s

解决方案


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

我的 GitHub 链接如下:

https://medium.com/@n.suthar.online/scalaes-apache-spark-and-elasticsearch-connector-d6bc927f8c51


推荐阅读