使用Java API获取Elasticsearch版本

时间:2013-11-26 13:01:08

标签: java api elasticsearch

我正在寻找Java API链接 curl -XGET http://localhost:9200

结果如:

{
  "ok" : true, 
  "status" : 200,
  "name" : "Kierrok",
  "version" : {
    "number" : "0.90.7",
    "build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2",
    "build_timestamp" : "2013-11-13T12:06:54Z",
    "build_snapshot" : false,
    "lucene_version" : "4.5.1"
  },
  "tagline" : "You Know, for Search"
}

我希望它在java api的admin()部分的某个地方?我找不到了。

2 个答案:

答案 0 :(得分:4)

我找到了这个解决方案(Scala Code但Java API)

case class GetEsVersionQuery(esClient: Client) {
  lazy val p = promise[NodesInfoResponse]()

  esClient
    .admin()
    .cluster()
    .prepareNodesInfo()
    .all()
    .execute()
    .addListener(new ActionListener[NodesInfoResponse] {

    def onFailure(e: Throwable) = {
      p failure e
    }

    def onResponse(response: NodesInfoResponse) = p success response
  })

  def execute: Future[NodesInfoResponse] = p.future
}

def testElasticsearchVersion: Future[Boolean] = {
    GetEsVersionQuery(esClient).execute map {
      esVersion => {
        val nodes = esVersion.iterator().toList
        nodes forall(node => node.getVersion.after(Version.V_0_90_5))
      }
    } recover {
      case e: Throwable => false
    }
  }
}

来自elasticsearch用户组的David Pilato的信用。

答案 1 :(得分:0)

jar文件中有一个资源:es-build.properties。这包含您需要的大部分相关信息。最容易的就是打开该文件并阅读属性。

version=0.90.6
hash=e2a24efdde0cb7cc1b2071ffbbd1fd874a6d8d6b
timestamp=1383573249653