Как подключиться к AWS Elasticsearch?
Я пытаюсь подключиться к AWS Elasticsearch, но всегда получаю следующую ошибку:
Exception in thread "main" org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:278)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197)
at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106)
at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:98)
at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:334)
at org.elasticsearch.action.index.IndexRequestBuilder.doExecute(IndexRequestBuilder.java:313)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
at com.c_backendcrawler.utility.ElasticSearch.uploadObject(ElasticSearch.java:25)
at com.c_backendcrawler.Start.main(Start.java:34)
мой код ниже:
//Create Client
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "zencubes-search").put("node.name","Darkhawk").build();
TransportClient transportClient = new TransportClient(settings);
transportClient.addTransportAddress(new InetSocketTransportAddress(
"x.x.x.x",9300));
return transportClient;
вывод из AWS Elasticsearch:
{
status: 200,
name: "Darkhawk",
cluster_name: "817880037706:zencubes-search",
version: {
number: "1.5.2",
build_hash: "62ff9868b4c8a0c45860bebb259e21980778ab1c",
build_timestamp: "2015-04-27T09:21:06Z",
build_snapshot: false,
lucene_version: "4.10.4"
},
tagline: "You Know, for Search"
}
Я попытался свернуться (https://search-zencubes-search-xxxxxxxx.eu-west-1.es.amazonaws.com/) и он работает-но не на порту 9300. Что я здесь делаю не так?
3 ответов
собственный транспортный протокол не поддерживает использование AWS Managed ElasticSearch и доступен только на конечной точке REST. Рассмотрите возможность переключения клиента на использование конечной точки REST, напримерhttps://github.com/searchbox-io/Jest.
источник:https://forums.aws.amazon.com/thread.jspa?messageID=681938
начиная с Elasticsearch Java SDK версии 5.6 есть отдых клиента доступен. Это позволяет подключаться к сервису Elasticsearch на AWS.
В настоящее время Служба Elasticsearch позволяет устанавливать до версии 5.5, но вы можете использовать 5.6 Java SDK против кластера 5.5 с незначительными ограничениями.
Примечание: при инициализации RestClient
вы должны использовать порт 80
или 443
соответственно вместо 9200
. Е. Г.
RestClient restClient = RestClient.builder(
new HttpHost("search-test-elasti-xxxx-xxxxx.us-east-1.es.amazonaws.com", 80, "http")).build();
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClient);
// [...]
Как сказал Джон Рассел выше,вам нужно использовать клиент REST для связи с вашим кластером AWS Elastic.
Elastic недавно выпустила первую RC-версию своего собственного клиента JAVA REST, поэтому теперь это также вариант.
Клиентские Документы: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html
Maven РЕПО: http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.elasticsearch.client%22%20AND%20a%3A%22rest%22