【问题标题】:ElasticSearch 6 High Level Rest Client preparePutMappingElasticSearch 6 高级 Rest 客户端 preparePutMapping
【发布时间】:2018-01-04 17:35:04
【问题描述】:

我正在尝试从 ElasticSearch 2 过渡到 5 或 6。我想我想直接跳到 6.1.1 并使用 RestHighLevelClient,因为它比我使用的现有传输客户端更接近低水平休息客户端。

但是,我遇到了问题作为集成测试的一部分,我正在创建索引并插入特定数据,因此我知道我的查询是正确的。我似乎无法在高级客户端中做到这一点。特别是,我希望能够调用:

  RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost(host, port)))
  client.indices()
        .preparePutMapping(databaseName)
        .setType(tableName).etc....

但是,client.indices() 返回一个没有 preparePutMapping() 的 org.elasticsearch.client.IndicesClient(来自 org.elasticsearch.client:elasticsearch-rest-high-level-client:6.1.1)。我需要一个 org.elasticsearch.client.IndicesAdminClient(来自 org.elasticsearch:elasticsearch:6.1.1)。我不知道如何从 RestHighLevelClient 或 RestClient 获得它。

我运气不好?这只是尚未实施的过渡阵痛吗?或者更永久的东西?

【问题讨论】:

    标签: elasticsearch elasticsearch-5


    【解决方案1】:

    看着documentation

    client.admin().indices()
          .preparePutMapping(databaseName)   
          .setType(tableName)
          ...
    

    看起来你只需要一个额外的.admin()

    【讨论】:

    • 据我所知,提供的解决方案是针对 Java API 客户端的,最初的问题是针对高级 REST API 客户端的(如果我错了,请纠正我)。我面临同样的问题,我需要将preparePutMapping 从 Java API 客户端迁移到高级 REST API 客户端。拜托,如果有人知道什么是最好的方法,我真的很感谢你的帮助(我相信 C Dorman 也是如此)。谢谢!
    • 抱歉,这是针对传输客户端的。恐怕你得等到 6.4 才有这个功能:github.com/elastic/elasticsearch/pull/30400
    猜你喜欢
    • 2020-03-04
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多