SpringBoot系列——ElasticSearch

  前言

  本文記錄安裝配置ES環境,在SpringBoot項目中使用SpringData-ElasticSearch對ES進行增刪改查通用操做java

 

  ElasticSearch官網:https://www.elastic.co/cn/products/elasticsearchnode

  SpringData-ElasticSearch官網:https://spring.io/projects/spring-data-elasticsearchgit

 

  安裝配置ES環境

  過程參考這篇文章:https://blog.csdn.net/chen_2890/article/details/83757022github

 

  下載ES

  連接:https://www.elastic.co/cn/downloads/elasticsearchspring

 

  選擇最新版下載便可,Elasticsearch無需安裝,解壓即用,直接雙擊 elasticsearch.bat 運行數據庫

  PS:下載下來後發現,最新版須要java jdk11,個人是jdk1.8,全部仍是下載回6.X版本吧....npm

 

 

 

 

 

  安裝Head插件

  下載地址:https://github.com/mobz/elasticsearch-head瀏覽器

 

  PS:我的以爲,這個插件就相似PLSQL、Navicat工具,做用差很少springboot

 

  注意:es5以上版本安裝head須要安裝node和grunt,執行 npm install -g grunt-cli 安裝grunt cors

 

 

 

  

  第一步:進入Elasticsearch安裝目錄下的config目錄,修改elasticsearch.yml文件.在文件的末尾加入如下代碼

http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

  而後去掉network.host: 192.168.0.1的註釋並改成network.host: 0.0.0.0,去掉cluster.name;node.name;http.port的註釋(也就是去掉#)忽略全部註釋,最終的配置是

cluster.name: springboot-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200

http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

 

  第二步:雙擊elasticsearch.bat啓動Elasticsearch,瀏覽器訪問9200端口

 

 

 

  第三步:在https://github.com/mobz/elasticsearch-head中下載head插件,選擇下載zip

 

  第四步:解壓到指定文件夾下,修改Gruntfile.js 在對應的位置加上 hostname:'*'

  第五步:打開cmd命令行窗口 ,在解壓目錄下執行npm install 安裝,完成後執行grunt server 或者 npm run start 運行head插件,若是運行不成功建議從新安裝grunt

 

 

 

 

  打開瀏覽器訪問9100端口

 

 

 

 

  配置IK分詞器

  注意:你的Elasticsearch和IK分詞器必須版本統一

 

 

 


  GitHub地址:https://github.com/medcl/elasticsearch-analysis-ik

  下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

  解壓後把文件夾複製到ES的的plugins目錄下面,而後重啓ES

 

 

 

   使用postman測試分詞效果

  若是是ik分詞插件是6.x版本的,只能用postman測試,並且查詢條件要放在body體內,若是直接在url加上查詢條件會報錯

  http://localhost:9200/_analyze?analyzer=ik_max_word&text=我愛中華人民共和國

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "愛",
            "start_offset": 1,
            "end_offset": 2,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "中華人民共和國",
            "start_offset": 2,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "中華人民",
            "start_offset": 2,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "中華",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "華人",
            "start_offset": 3,
            "end_offset": 5,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "人民共和國",
            "start_offset": 4,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "人民",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "共和國",
            "start_offset": 6,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 8
        },
        {
            "token": "共和",
            "start_offset": 6,
            "end_offset": 8,
            "type": "CN_WORD",
            "position": 9
        },
        {
            "token": "國",
            "start_offset": 8,
            "end_offset": 9,
            "type": "CN_CHAR",
            "position": 10
        }
    ]
}

 

  到這裏,ES環境算是搭建成功了

  正常狀況下,直接啓動ES就能夠跑項目了,若是想要直觀的看到數據,就啓動head插件

 

  整合通用代碼

  工程結構

  與咱們以前的通用JPA差很少,風格統一,也是直接單表基礎通用增刪改查,一人挖井,全村喝水

 

 

 

 

  建立索引、映射

  至關於數據庫、數據表

 

 

 

  save接口

  無id,新增

 

   有id,更新,可局部更新

 

 

 

 

  get接口

 

 

  delete接口

 

 

  list接口

  測試list、page接口前,先調用batchSave生成測試數據

 

 

  可支持排序跟多條件等值查詢

 

 

 

 

 

 

  page接口

  測試list、page接口前,先調用batchSave生成測試數據

 

 

  page與list類似,但多了分頁條件

 

 

 

 

 

  bug記錄 

  ik分詞我發現了一個bug,不知道是否是我沒設置對的緣由,用title分詞去查詢的時候,小米手機單獨查是沒問題,小米手機查就查不到數據

 

 

 

 

 

 

 

  後記

 

  springboot整合springdata-es就到這裏,還差一個高亮顯示設置了沒見有效果,後面再查一下資料,實在不行就查詢回來後收到設置高亮算了,這些後面再補充吧

 

 

 

  代碼開源

  代碼已經開源、託管到個人GitHub、碼雲:

  GitHub:https://github.com/huanzi-qch/springBoot

  碼雲:https://gitee.com/huanzi-qch/springBoot

相關文章
相關標籤/搜索