elasticsearch java索引的增刪改查


1.創建索引並插入數據
Map<String, Object> json = new HashMap<String, Object>();
json.put("user", "kimchy5");
json.put("postDate", new Date());
json.put("message", "trying out Elasticsearch");
//參數設置
//Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
//TransportClient client = TransportClient.builder().settings(settings).build();
Client client = TransportClient.builder().build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
// 第一個參數:索引名;第二個參數:索引類型;第三個參數:索引ID(相同的id時修改數據,默認為隨機字符串)
IndexResponse indexResponse = client.prepareIndex("twitter", "json", "1").setSource(json).get();
System.out.println(indexResponse);
// 不指定id會隨機生成一個
//client.prepareIndex("twitter", "tweet").setSource(json);
client.close();

2.索引數據批量插入(插入效率高)
// 批量插入數據,刪除和修改也可以,不舉例了
BulkRequestBuilder bulkRequest = client.prepareBulk();
IndexRequest request = client.prepareIndex("twitter", "tweet", "1").setSource(json).request();
IndexRequest request2 = client.prepareIndex("twitter", "tweet", "2").setSource(json2).request();
bulkRequest.add(request);
bulkRequest.add(request2);
bulkRequest.execute().actionGet();

3.判斷索引是否存在
IndicesExistsRequest inExistsRequest = new IndicesExistsRequest("twitter");
IndicesExistsResponse inExistsResponse = client.admin().indices().exists(inExistsRequest).actionGet();
System.out.println("索引twitter是否存在:"+inExistsResponse.isExists());

4.刪除索引
//刪除索引twitter
client.admin().indices().prepareDelete("twitter").execute().actionGet();
//刪除索引中的某個文檔(一條數據)
client.prepareDelete("twitter", "tweet", "1");

5.查詢索引庫
Client client = TransportClient.builder().build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
 
// 第一個參數:要查找的內容 第二,三個參數:要查找的字段
QueryBuilder qb = QueryBuilders.multiMatchQuery("喧囂", "content","message");
// twitter:索引名 tweet:索引類型
SearchResponse response = client.prepareSearch("twitter").setTypes("tweet").setQuery(qb)
//設置查詢類型  SearchType.QUERY_AND_FETCH:全部獲取
                .setSearchType(SearchType.DFS_QUERY_AND_FETCH).execute().actionGet();
 
SearchHits hits = response.getHits();
if (hits.totalHits() > 0) {
    for (SearchHit hit : hits) {
        System.out.println("score:" + hit.getScore() + ":\t" + hit.getSource());// .get("title")
    }
} else {
    System.out.println("搜到0條結果");
}
client.close();

6.刷新索引
//刷新所有
client.admin().indices().prepareRefresh().get();
//刷新某一個
client.admin().indices().prepareRefresh("twitter").get();
//刷新某個類型
client.admin().indices().prepareRefresh("twitter","tweet").get();

7.更新索引數據
//更新索引(根據索引,類型,id)
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("twitter");
updateRequest.type("tweet");
updateRequest.id("1");
updateRequest.doc(jsonBuilder().startObject().field("content", "如果我說愛我沒有如果").endObject());
client.update(updateRequest).get();
或
UpdateRequest updateRequest = new UpdateRequest("twitter", "tweet", "1")
        .doc(jsonBuilder().startObject().field("content", "如果我說愛我沒有如果").endObject());
client.update(updateRequest).get();

8.插入更新
//插入更新(如果不存在id為3的則插入content為IndexRequest的內容,如果存在則更新content為UpdateRequest的內容)
IndexRequest indexRequest = new IndexRequest("twitter", "tweet", "3")
        .source(jsonBuilder().startObject()
            .field("content", "每當我迷失在黑夜里")
            .endObject());
UpdateRequest updateRequest2 = new UpdateRequest("twitter", "tweet", "3")
        .doc(jsonBuilder().startObject()
                .field("content", "請照亮我前行")
                .endObject())
        .upsert(indexRequest); 
client.update(updateRequest2).get();
client.close();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM