Я пытаюсь подключиться с Java к ElasticSearch, но я могу подключаться только через HTTP. Я не могу использовать TransportClient
. Существует ли оболочка Java-клиента вокруг API-интерфейсов ElasticSearch REST? Если да, то как его использовать?Java HTTP Client для ElasticSearch
ответ
Привет Существует новый проект, соответствующий вашим потребностям. Это Java-интерфейс Rest API для Elasticsearch
Проверьте это! его имя JEST
Новый «официальный» java-клиент REST will be available, начиная с версии 5.0.0-alpha4.
Извините за нижний предел, я уверен, что то, что вы написали, было действительно действительным в 2012 году, но сейчас существует несколько версий с открытым исходным кодом. –
@BastianVoigt благодарит за то, что привлек это мое внимание. Я обновил свой ответ, чтобы отразить последнюю ситуацию. – imotov
thx для обновления –
Мы только что открыли источник Flummi, клиент HTTP HTTP/REST для поиска эластичности. Он имитирует API транспортного клиента как можно ближе, упрощая перенос существующего кода. Он также обеспечивает лучший уровень абстракции, чем Jest, поскольку он сообщает обо всех ошибках с Исключениями. Попробуй!
Простой пример использования:
Flummi flummi = new Flummi("http://elasticsearch.base.url:9200");
SearchResponse searchResponse = flummi
.prepareSearch("products")
.setQuery(
QueryBuilders.termQuery("color", "yellow").build()
)
.execute();
System.out.println("Found "
+ searchResponse.getHits().getTotalHits()
+ " products");
searchResponse.getHits()
.stream().map(hit -> hit.getSource().get("name").getAsString())
.forEach(name -> System.out.println("Name: " + name));
Since version 5.6 из Elasticsearch Java SDK они обеспечивают Java REST Client.
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")).build();
// for the RestHighLevelClient
RestHighLevelClient client =
new RestHighLevelClient(restClient);
У меня такая же проблема, я должен иметь возможность подключаться только к ES-серверу через порт 80. Jest выглядит красиво, но, к сожалению, приложение для примера Jest находится за основной библиотекой Jest. – Phy6