
今天是劉小愛自學Java的第161天。
感謝你的觀看,謝謝你。

學習計劃安排如下:
- 學了幾天的Elasticserch,但都是它本身的知識點,如何通過Java語言去操作它呢?
- 這就好比以前學數據庫,在數據庫工具中通過sql語句也能實現增刪改查,而在Java中就可以通過jdbc操作數據庫。
- 這里不學原生的Elasticsearch客戶端,而是直接學習spring提供的套件:SpringDataElasticsearch。
- 畢竟要知道,我們以前也基本沒用原生的jdbc,而是用的框架,使用起來也簡便。
一、創建Demo工程
關于SpringDataElasticsearch介紹:

學Java有一個繞不開的坎就是spring,就是主流的很多功能都會看到spring的影子。
我們已經接觸過了的就有:SpringMVC、Spring、SpringBoot、SpringCloud。
今天繼續接觸Spring Data中的一個模塊。
為了更好地學習,創建一個demo工程。
通過spring腳手架創建項目

①Spring Initializr
使用idea開發工具創建Java項目有多種方式,以前就是通過Maven自行創建一個項目。
也可以通過Spring Initializr創建一個項目。
②說明項目名和Java版本號
項目名為es-demo,使用的jdk8.
③指定項目中需要用到的依賴
這里也就是springDataElasticsearch。
下圖也就是創建好后的項目結構:

該方式創建的好處在于:
我們不用自己導入依賴了,依賴是在創建項目時指定的,也就是創建項目中的步驟③
同時關于啟動類、配置文件都幫我們自學創建好了,其實無外乎就是上述三個核心關鍵步驟:啟動類、配置文件、pom文件。
該方式創建的壞處在于:
版本問題,項目中可能用的是比較舊的版本,spring創建的版本需要自行修改。
根據自己的需求選擇創建方式就好。
此外關于配置文件:

自行配置的是properties文件,而我們常用的是yml文件,這里將其修改成yml文件。
在配置文件中指定elasticsearch中對應的ip+端口,也就是我們前幾天在虛擬機上安裝elasticsearch的ip和端口。
二、創建索引和映射
我們以前使用MySQL數據庫的時候,在Java中是實體類對應了數據庫中的表數據。
同樣的道理,現在是索引庫了,在Java中也是使用實體類對應對應的索引庫。

注解@Document說明對應的索引庫:
- indexName:索引庫名稱叫item。
- type:索引庫類型docs。
- shards:分片。
- replicas:副本。
注解@Field說明索引庫字段:
類型有很多種,double屬于數字型,text和string屬于字符型,其中text表示分詞,string表示不分詞,上述中的keyword其實也就對應著string。
注意images這個字段,index=false表示不需要索引,說明該字段不需要搜索功能。

我們以前學數據庫的時候,在Java中操作數據庫使用到了JdbcTemplate。
現在是要操作索引庫,同樣的道理,也有一個ElasticsearchTemplate
①createIndex()
創建索引庫,參數為實體類的Class對象。
②putMapping()
說明字段映射關系,參數同上。
三、實現增刪改查
通過JdbcTemplate實現數據庫的增刪改查,索引庫中用ElasticsearchTemplate。
但是我們不用這種方式而是用其它方式。
畢竟我們現在操作數據庫也沒用JdbcTemplate而是常常使用通用mapper。
該方法也就類似于通用mapper。

在通用mapper中我們是創建一個自定義接口繼承mapper接口。
再說明泛型之后,就可以直接使用這個接口完成增刪改查操作了。
同樣的道理,在這里是也是自定義一個接口繼承ElasticsearchRepository接口。
關于這個接口的繼承體系圖通過上圖也能查看到,名稱也都是見名知義的。
1新增索引

saveAll方法,看它的名字也就知道了其對應的也就是新增操作。
其中關于新增,可以添加一條數據,也可以添加多條數據,例子中使用的是批量操作。
注意:在正式項目中應該是從數據庫這種查詢到需要實現搜索功能的數據,再將這些數據添加到索引庫中,從而實現搜索功能。
我這邊為了方便是自己創建的偽數據。
2查詢索引

findAll也就是查詢所有的數據,因為我們添加了多條數據,所以查詢結果是一個集合。
增強for循環遍歷輸出,在控制臺上也就能查詢到新增的數據。
同樣的道理,還有deleteAll刪除索引,當然這是都是最簡單最基礎的幾種api,后續更多用法再說明。
最后
行有不得反求諸己,我是@劉小愛
一個白天上班晚上學習的95后滬漂,不為其它,只為學會自律做好自己,也愿我的每日打卡能給你帶來勇氣,歡迎點贊關注和評論。