我正在尝试在scala程序中插入elasticsearch。
在build.sbt中我添加了
libraryDependencies += "org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % "7.5.2" ,
libraryDependencies += "org.elasticsearch" % "elasticsearch" % "7.5.2"
我的密码是
val client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")))
编译时,我得到如下错误
not found: type RestHighLevelClient
not found: value RestClient
我错过了一些重要的东西吗?我的目标是从flink获得一条流,并将其插入elasticsearch,非常感谢您的帮助。
2条答案
按热度按时间vohkndzv1#
我们不需要单独使用这些依赖项来使用flink流在elasticsearch中插入数据。
只需使用这个flink-connector-elasticsearch7或flink-connector-elasticsearch6
elasticsearch的所有依赖项都与flink elastic连接器一起提供。所以我们不需要将它们单独包含在
build.sbt
文件。flink elasticsearch的build.sbt文件
欲知更多详情,请浏览我在这里提供的flink elasticsearch代码。
注意:自从Elastic6.x以后,他们开始全面支持rest elastic客户端。在elastic5.x之前,他们一直在使用transport elastic客户端。
yhuiod9q2#
使用elasticsearch和flink如果使用flink的
ElasticsearchSink
,而不是与RestHighLevelClient
直接。不过,flink1.10中的elasticsearch7.x版还没有发布(很快就会发布;rc1已输出)。使用此连接器需要额外的依赖项,例如
flink-connector-elasticsearch6_2.11
(或flink-connector-elasticsearch7_2.11
,与flink 1.10一起提供)。请参阅与flink一起使用elasticsearch的文档。
为什么更喜欢Flink的Flume而不是使用
RestHighLevelClient
你自己就是flink sink发出批量请求,处理错误和重试,并且它与flink的检查点机制相结合,所以它能够保证如果某些东西失败了,什么都不会丢失。至于你的实际问题,也许你需要补充一下