首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用alpakka从elasticsearch读取数据

无法使用alpakka从elasticsearch读取数据
EN

Stack Overflow用户
提问于 2021-07-02 14:39:20
回答 1查看 46关注 0票数 0

我试图使用alpakka从elasticsearch读取文档(存储在ES中的json数据)。我得到了这个alpakka-Elasticsearch。这里说你可以使用ElasticsearchSource, ElasticsearchFlow or the ElasticsearchSink从Elasticsearch流传送消息或将消息流到Elasticsearch。我试图实现ElasticsearchSource方法。所以我的代码看起来像这样

代码语言:javascript
复制
  val url = "http://localhost:9200"
  val connectionSettings = ElasticsearchConnectionSettings(url)
  val sourceSettings = ElasticsearchSourceSettings(connectionSettings)
  val elasticsearchParamsV7 = ElasticsearchParams.V7("category_index")
        val copy = ElasticsearchSource
          .typed[CategoryData](
            elasticsearchParamsV7,
            query = query,
            sourceSettings
          ).map { message: ReadResult[CategoryData] =>
          println("Inside message==================>  "+message)
          WriteMessage.createIndexMessage(message.id, message.source)
        } .runWith(
          ElasticsearchSink.create[CategoryData](
            elasticsearchParamsV7,ElasticsearchWriteSettings(connectionSettings)
          )
        )
  println("Final data==============>.  "+copy)

最后,复制返回Future[Done]的值。但我无法从ES中读取数据。

我是不是漏掉了什么?

还有,有没有其他方式使用akka http客户端api来做同样的事情呢?

在akka中使用ES的首选方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 19:34:24

要从Elasticsearch读取数据,这样的内容应该足够了:

代码语言:javascript
复制
  val matchAllQuery = """{"match_all": {}}"""
  val result = ElasticsearchSource
    .typed[CategoryData](
      elasticsearchParamsV7,
      query = matchAllQuery,
      sourceSettings
    ).map { message: ReadResult[CategoryData] =>
    println("Read message==================>  "+message)
  }.runWith(Sink.seq)

  result.onComplete(res => res.foreach(col => println(s"Read: ${col.size} records")))

如果类型CategoryData与索引中存储的内容不正确匹配,则查询可能不会返回结果。

如果有疑问,可以读取原始JSON:

代码语言:javascript
复制
  val elasticsearchSourceRaw = ElasticsearchSource
    .create(
      elasticsearchParamsV7,
      query = matchAllQuery,
      settings = sourceSettings
    )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68220653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档