Java HTTP客户端用于ElasticSearch

24

我正在尝试从Java连接到ElasticSearch,但是我只能通过HTTP连接。 我无法使用TransportClient。 是否有一个Java客户端包装器可用于ElasticSearch REST API? 如果有,如何使用它?

4个回答

23

你好,有一个全新的项目完全符合您的需求。它是基于Java的针对Elasticsearch的Rest API。

快来看看吧!它的名字叫做JEST


我有同样的问题,我必须能够仅通过80端口连接到ES服务器。Jest看起来不错,但不幸的是,Jest示例应用程序远远落后于核心Jest库。 - PHY6

9

从v5.0.0-alpha4开始,将提供一个新的“官方”基于REST的java客户端


5
我们刚刚开源了Flummi,这是一个Java HTTP/REST客户端,专为Elastic Search设计。它尽可能地模拟了传输客户端的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));

3

自 ElasticSearch Java SDK 5.6 版本开始,他们提供了一个 Java REST 客户端

 RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200, "http"),
    new HttpHost("localhost", 9201, "http")).build();

 // for the RestHighLevelClient
 RestHighLevelClient client =
    new RestHighLevelClient(restClient);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接