本人目前使用的版本是2.0.0html
client java
基礎代碼以下node
Settings settings = Settings.settingsBuilder().put("cluster.name","jiangnan_cluster").put("client.transport.sniff", true).build(); try { ElasticClient client = TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.95"), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.96"), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("172.24.3.97"), 9300)); } catch (UnknownHostException e) { e.printStackTrace(); }
官網demojson
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/transport-client.htmlapi
官網給的demo 並無設置setting 的方式,使用後會有多線程
None of the configured nodes are available 異常elasticsearch
create indexide
基礎代碼以下 post
Map<String, Object> json = new HashMap<String, Object>(); json.put("user","jn"); json.put("postDate",new Date()); json.put("message", "trying out Elasticsearch"); IndexResponse response = client.prepareIndex("index", 「type」, 」1") .setSource(json) .get();
若是 此處 id 不本身定義, es 會建立一個默認的隨機碼(還未細看具體實現)似的編碼 如:AVRCKiIlXmm1GX2hHZvwui
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-index.html
get index
基礎代碼以下
GetResponse response = client.prepareGet("index", "type", "1") .setOperationThreaded(false) .get(); System.out.println(response.getSourceAsString());
注:setOperationThreaded
operationthreaded 默認爲 true,此處顯示的設置爲false 表明 非多線程模式
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-get.html
delete index 同 get index
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-delete.html
update index
基礎代碼以下
Map<String, Object> json = new HashMap<String, Object>(); json.put("id","ss"); json.put("user","jbbcn"); json.put("postDate",new Date()); json.put("message", "trying out Elasticsearch"); try { UpdateRequest request = new UpdateRequest("index","type","1") .doc(jsonBuilder().startObject().field("user", "zy").endObject()); UpdateResponse response = client.update(request).get(); System.out.println(response.getVersion()); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); }
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-update.html
bulk
基礎代碼以下
BulkRequestBuilder request = client.prepareBulk(); BulkResponse response = null; try { response = request .add(client.prepareIndex("index", "type", "2") .setSource(jsonBuilder().startObject().field("user", "jn5").endObject())) .add(client.prepareIndex("index", "type", "3") .setSource(jsonBuilder().startObject().field("user", "jn3").endObject())) .add(client.prepareDelete("index","type","3")) .get(); } catch (IOException e) { e.printStackTrace(); } System.out.println(response.toString());
此處做用是將多個操做合併爲一個request 操做
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs-bulk.html
search index
基礎代碼以下
SearchResponse response = client.prepareSearch("index") .setTypes("type") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.termQuery("message","out")) .setPostFilter(QueryBuilders.existsQuery("id」))//只獲取包含 id field 的 結果 .setFrom(0).setSize(10).setExplain(true) .execute() .actionGet(); SearchHits searchHits = response.getHits(); System.out.println(searchHits.hits().length); for(SearchHit hitFields:searchHits.getHits()){ System.out.println(hitFields.getSource().toString()); } System.out.println(response.getHits().toString()); // 獲取全部數據 // SearchResponse response = client.prepareSearch().execute().actionGet();
官網demo
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-search.html