目前ElasticSearch版本最常用的應該時5.X 和6.X,這兩個版本中都存在兩種客戶端:
簡單總結:
1,如果服務端是5.6以下的,選擇相同版本的TransportClient,避免一些API服務端不支持
2,如果服務端是5.6以上的,選擇相同版本的RestClient
TransportClient起步:
5.6及之前的版本:
// on startup Client client = TransportClient.builder().build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300)); // on shutdown client.close();
6.0及之后的版本
// on startup TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300)) .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300)); // on shutdown client.close();
TransportClient發送搜索請求:
SearchResponse response = client.prepareSearch("index1", "index2") .setTypes("type1", "type2") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.termQuery("multi", "test")) // Query .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter .setFrom(0).setSize(60).setExplain(true) .get();
HttpClient起步:
// Java Low Level REST Client
RestClient lowLevelRestClient = RestClient.builder( new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http")).build();
// Java High Level REST Client
RestHighLevelClient client = new RestHighLevelClient(lowLevelRestClient);
HttpClient發送搜索請求:
SearchRequest searchRequest = new SearchRequest(); searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest);
參考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.2/index.html