【发布时间】:2012-05-13 13:34:13
【问题描述】:
我正在尝试从 Java 连接到 ElasticSearch,但我只能通过 HTTP 连接。我不能使用TransportClient。是否有围绕 ElasticSearch REST API 的 Java 客户端包装器?如果是这样,我该如何使用它?
【问题讨论】:
标签: java elasticsearch elasticsearch-jest
我正在尝试从 Java 连接到 ElasticSearch,但我只能通过 HTTP 连接。我不能使用TransportClient。是否有围绕 ElasticSearch REST API 的 Java 客户端包装器?如果是这样,我该如何使用它?
【问题讨论】:
标签: java elasticsearch elasticsearch-jest
您好,有一个全新的项目正好符合您的需求。它基于 Java 的用于 Elasticsearch 的 Rest API
看看吧!它的名字JEST
【讨论】:
一个新的“官方”基于 REST 的 java 客户端 will be available 从 v5.0.0-alpha4 开始。
【讨论】:
我们刚刚开源了Flummi,这是一个用于 Elastic Search 的 Java 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);
【讨论】: