ElasticSearch學習(八)在Java應用中實現批量操作(mget&bulk)和查詢刪除、match_all(查詢所有)
阿新 • • 發佈:2019-02-09
//mget批量查詢 @Test public void test6() throws Exception { //指定ES叢集 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //建立訪問ES伺服器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.123.101"),9300)); MultiGetResponse response = client.prepareMultiGet() .add("index1", "blog", "8", "10") .add("lib3", "user", "1", "2", "3") .get(); for (MultiGetItemResponse itrm : response){ GetResponse gr = itrm.getResponse(); if (gr != null && gr.isExists()){ System.out.println(gr.getSourceAsString()); } } } //bulk批量操作可以增刪改 這裡是新增 @Test public void test7() throws Exception { //指定ES叢集 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //建立訪問ES伺服器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.123.101"),9300)); BulkRequestBuilder bulk = client.prepareBulk(); //批量新增 bulk.add(client.prepareIndex("lib2", "books", "8") .setSource( XContentFactory.jsonBuilder().startObject() .field("titie", "python") .field("price", 99) .endObject() ) ); bulk.add(client.prepareIndex("lib2", "books", "9") .setSource( XContentFactory.jsonBuilder().startObject() .field("titie", "VR") .field("price", 29) .endObject() ) ); BulkResponse response = bulk.get(); System.out.println(response.status()); if (response.hasFailures()){ System.out.println("失敗了"); } } //查詢刪除 //查詢出滿足條件的文件之後刪除 @Test public void test8() throws Exception { //指定ES叢集 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //建立訪問ES伺服器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.123.101"),9300)); BulkByScrollResponse response = DeleteByQueryAction.INSTANCE .newRequestBuilder(client) .filter(QueryBuilders.matchQuery("title", "工廠")) .source("index1") .get(); long counts = response.getDeleted(); System.out.println(counts); } //查詢所有 //match_all @Test public void test9() throws Exception { //指定ES叢集 Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //建立訪問ES伺服器的客戶端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.123.101"),9300)); QueryBuilder qb = QueryBuilders.matchAllQuery(); SearchResponse sr = client.prepareSearch("lib3") .setQuery(qb) .setSize(3) .get(); SearchHits hits = sr.getHits(); for (SearchHit hit : hits){ System.out.println(hit.getSourceAsString()); Map<String, Object> map = hit.getSourceAsMap(); for (String key : map.keySet()){ System.out.println(key +"= " +map.get(key)); } } }