標籤:ring win ast byte main opened type exists import
測試檢索索引庫的功能
1 package com.juyun.test; 2 3 import java.net.InetAddress; 4 5 import org.elasticsearch.client.Client; 6 import org.elasticsearch.common.settings.Settings; 7 import org.elasticsearch.common.transport.InetSocketTransportAddress; 8 import org.elasticsearch.index.query.QueryBuilder; 9 import org.elasticsearch.index.query.QueryBuilders; 10 import org.elasticsearch.search.SearchHit; 11 import org.elasticsearch.search.SearchHits; 12 import org.elasticsearch.transport.client.PreBuiltTransportClient; 13 import org.elasticsearch.action.get.GetResponse; 14 import org.elasticsearch.action.get.MultiGetItemResponse; 15 import org.elasticsearch.action.get.MultiGetResponse; 16 import org.elasticsearch.action.search.SearchResponse; 17 18 public class ElasticsearchGet { 19 20 private static Client client; 21 22 /** 23 * 測試檢索索引庫的功能 24 * @param args 25 */ 26 public static void main(String[] args) { 27 28 try { 29 // 設定叢集名稱 30 Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build(); 31 // 建立client 32 client = new PreBuiltTransportClient(settings) 33 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.10.125"), 9300)); 34 35 36 //multiGet("flow", "data", "AVvnE1sA3HhivpslN8lN"); 37 getAll("newindex","newhttp"); 38 39 40 41 // 關閉client 42 client.close(); 43 44 } catch (Exception e) { 45 e.printStackTrace(); 46 } 47 } 48 49 // 通過單一的ID擷取一個文檔 50 public static void get(String indexName,String TypeName,String id){ 51 MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 52 .add(indexName, TypeName, id) 53 .get(); 54 55 for (MultiGetItemResponse itemResponse : multiGetItemResponses) { // 遍曆結果集 56 GetResponse response = itemResponse.getResponse(); 57 if (response.isExists()) { // 檢驗文檔是否存在 58 String json = response.getSourceAsString(); // 擷取文檔源 59 System.out.println(json); 60 } 61 } 62 } 63 64 // 傳入多個id,從相同的索引名/類型名中擷取多個文檔 65 public static void multiGet(String indexName,String TypeName,String id1,String id2,String id3){ 66 MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 67 .add(indexName, TypeName, id1, id2, id3) // 傳入多個id,從相同的索引名/類型名中擷取多個文檔 68 .add("another", "type", "foo") // 可以同時擷取不同索引中的文檔 69 .get(); 70 71 for (MultiGetItemResponse itemResponse : multiGetItemResponses) { // 遍曆結果集 72 GetResponse response = itemResponse.getResponse(); 73 if (response.isExists()) { // 檢驗文檔是否存在 74 String json = response.getSourceAsString(); // 擷取文檔源 75 System.out.println(json); 76 } 77 } 78 } 79 80 // 同時擷取不同索引中的文檔 81 public static void multiGet(String indexName1,String indexName2,String indexName3){ 82 MultiGetResponse multiGetItemResponses = client.prepareMultiGet() 83 .add(indexName1, indexName2,indexName3) // 可以同時擷取不同索引中的文檔 84 .get(); 85 86 for (MultiGetItemResponse itemResponse : multiGetItemResponses) { // 遍曆結果集 87 GetResponse response = itemResponse.getResponse(); 88 if (response.isExists()) { // 檢驗文檔是否存在 89 String json = response.getSourceAsString(); // 擷取文檔源 90 System.out.println(json); 91 } 92 } 93 } 94 95 // 根據索引和類別查詢所有資料 96 public static void getAll(String indexName,String typeName){ 97 98 QueryBuilder queryBuilder =QueryBuilders.matchAllQuery(); 99 SearchResponse searchResponse = client.prepareSearch(indexName).setTypes(typeName)100 .setQuery(queryBuilder)101 .execute()102 .actionGet();103 SearchHits hits = searchResponse.getHits(); // 擷取搜尋結果104 System.out.println("查詢到記錄數:" + hits.getTotalHits());105 SearchHit[] searchHists = hits.getHits();106 if(searchHists.length>0){107 for(SearchHit hit:searchHists){108 System.out.println(hit.getSource());109 //System.out.println(hit.id());110 }111 }112 }113 114 115 116 // todo...117 // 欄位和內容查詢(分詞功能未加)118 public static void get(){119 120 // 建立QueryBuilder,可以設定單個欄位的查詢,也可以設定多個欄位的查詢121 QueryBuilder qb1 = QueryBuilders.termQuery("time", "2017-05-08T02:50:47.700Z"); // 查詢time欄位中包含2關鍵字的文檔122 QueryBuilder qb2= QueryBuilders.multiMatchQuery("2", "time","inbyte"); // 查詢time或inbyte欄位中包含2關鍵字的文檔123 124 // 執行查詢,通過client設定查詢的index、type、query.返回一個SearchResponse對象125 SearchResponse response = client.prepareSearch("flow").setTypes("data").setQuery(qb1).execute()126 .actionGet();127 // 處理查詢結果,擷取查詢結果集合128 SearchHits hits = response.getHits();129 if (hits.totalHits() > 0) {130 for (SearchHit hit : hits) {131 System.out.println("score:"+hit.getScore()+":\t"+hit.getSource());// .get("title")132 }133 } else {134 System.out.println("搜到0條結果");135 }136 }137 138 }ElasticsearchGet
Elasticsearch5.0 Java Api(四) -- 檢索索引