[ElasticSearch]使用 java API 進行CRUD操作

本篇文章將介紹怎樣使用 java 對 ElasticSearch 進行操作。
首先需要建立一個 maven 項目,這裏不再贅述。
1.在maven 的 pom.xml文件中需要引入以下幾個 jar 包

<dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>5.6.3</version>
</dependency>
<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.9.1</version>
</dependency>
<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.9.1</version>
</dependency>

2.在 resources 目錄下添加log4j2.properties文件

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout

rootLogger.level = info
rootLogger.appenderRef.console.ref = console

3.使用TransportClient連接 ElasticSearch。

Settings settings = Settings.builder().put("cluster.name", "leo").build();
TransportClient client = new PreBuiltTransportClient(settings). addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("***.***.***.***"), 9300));
//***.***.***.*** 表示 ip 地址,本地的話,可以使用 localhost,9300是默認的 api 訪問接口

4.創建索引
使用 json文件來創建索引,生成 json 文件的方式有多種,字符串格式、利用 Map、利用jackson 序列化 beans 到 json、使用 ElasticSearch helps生成(我使用的方式,其它方式實現可參看官方文檔)

IndexResponse response = client.prepareIndex("books", "book", "1")
                        .setSource(jsonBuilder().
                                startObject()
                                .field("book_name", "ElasticSearch入門")
                                .field("author", "張三")
                                .field("publish_time", "207-09-09")
                               .endObject())
                        .get();

5.獲取索引

GetResponse getResponse = client.prepareGet("books", "book", "1").execute().actionGet();
        System.out.println(getResponse.getSourceAsString());

6.更新索引

UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("books");
updateRequest.type("book");
updateRequest.id("1");
updateRequest.doc(jsonBuilder().startObject().field("author", "李四").endObject());
try {
    client.update(updateRequest).get();
} catch (InterruptedException e) {
    e.printStackTrace();
} catch (ExecutionException e) {
    e.printStackTrace();
}

運行後發現作者從“張三”更新爲“李四”了。
7.刪除索引

DeleteResponse response = client.prepareDelete("books", "book", "1").get();

索引被刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章