scala - 从Scala中的 Elasticsearch 检索数据/值

标签 scala elasticsearch

我是scala和elasticsearch的新手。我在Elasticsearch中有以下数据,索引名称=“abc”,文档类型=“_doc”。

{
  "took": 45,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
      {
        "_index": "abc",
        "_type": "_doc",
        "_id": "1234",
        "_score": 1,
        "_source": {
          "Code": "PDF",
          "Description": "Portion Occured",
          "Id": "1234",
          "Operator": {
            "Id": "1",
            "PopulationLevel": "Key"
          },
          "Usage": [
            {
              "Allow": true
            }
          ]
        }
      }
    ]
  }
}
我的 Elasticsearch 客户端中有以下代码。
trait ElasticsearchClient {

  lazy val esRestConnection: RestClient = createEsRestClient(elasticSearchsUri, elasticSearchProtocol)
  lazy val esHttpConnection: HttpClient = HttpClient.fromRestClient(esRestConnection)

  
   * Method to create instance of HTTP Client to access the given  Elasticsearch URI.
  
   def createEsRestClient(uri: String, protocol: String): RestClient = {
    val hosts = ElasticsearchClientUri(uri).hosts.map {
      case (host, port) =>
        new HttpHost(host, port, protocol)
    }
    RestClient.builder(hosts: _*)
      .build()
  }
}
我正在使用sksamuel elastic4s-Elasticsearch Scala客户端
我需要编写一个代码,通过该代码我可以检索“Id”的值,即该特定索引的1234。我还有一些索引,我需要从中检索 Elasticsearch 的“Id”值。我需要从代码中传递索引名称。我怎样才能做到这一点

最佳答案

case class DocumentData(
                       id:Option[Int]
                       )
object DocumentData{
隐式val格式:Format [DocumentData] = new Format [DocumentData] {
override def reads(json: JsValue): JsResult[DocumentData] = ???

override def writes(o: DocumentData): JsValue = {
  Json.obj(
    "query" -> Json.obj(
      "bool" -> Json.obj(
        "must" -> Json.arr(
          Seq(o.id.map(queryString =>
            Json.obj("match" -> Json.obj(
              "id"->queryString
            ))),
          )
            .flatten[JsObject])))
  )

}
}
}

关于scala - 从Scala中的 Elasticsearch 检索数据/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63903700/

相关文章:

linux - Raspberry Pi 上的 ElasticSearch 退出

Scalatest 异步测试套件与最终和WhenReady (org.scalatest.concurrent)

scala - <% 运算符的功能是什么?

scala - 在 JSON 中读取字典

scala - 什么是 Scala < :<, = := and <%< classes for?

javascript - 如何访问从模拟库返回的模拟方法

scala - Spark GraphX 聚合求和

Elasticsearch |将具有相同分数的结果随机化

elasticsearch - ElasticSearch 1.1.2无法正常启动

python - django-elasticsearch-dsl : how to search across multiple documents?