0

AWS で実行されている ES インスタンスがあり、JAVA API を使用して接続したいと考えています。

TransportClient client = TransportClient.builder().build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9320));

List<DiscoveryNode> nodes = client.connectedNodes();

System.out.println(nodes.size()); // prints 0

for (DiscoveryNode node : nodes) {
  System.out.println(node.toString());
}

SearchRequestBuilder searchRequestBuilder = client.prepareSearch("indexName");

String postQuery = "{ some stuff }";

searchRequestBuilder.setQuery(QueryBuilders.wrapperQuery(postQuery));

SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
System.out.println(searchResponse.toString().replace("\n\n", "\n"));

このプログラムを実行すると、次のようになります。

NoNodeAvailableException[構成されたノードは使用できません:
[{#transport#-1}{127.0.0.1}{localhost/127.0.0.1:9320}]

TCP ポートが で9320、REST ポートがであるインスタンスにトンネリングしました9220

animesh$ lsof -i :9320
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     44239 animesh    7u  IPv6 ______ 0t0  TCP localhost:9320 (LISTEN)
ssh     44239 animesh    8u  IPv4 ______ 0t0  TCP localhost:9320 (LISTEN)

animesh$ curl localhost:9220
{
  "name" : "SuperNode",
  "cluster_name" : "SuperCluster",
  "version" : {
    "number" : "2.3.0",
    "build_hash" : "8371be8d5fe5df7fb9c0516c474d77b9feddd888",
    "build_timestamp" : "2016-03-29T07:54:48Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.0"
  },
  "tagline" : "You Know, for Search"
}
4

1 に答える 1