Elasticsearch
一、ES概述
Elasticsearch,簡稱ES。
功能:實時的存儲、檢索數(shù)據(jù)、日志統(tǒng)計、分析、系統(tǒng)監(jiān)控
官網(wǎng):https://www.elastic.co/cn
沒有ES之前,使用Mysql實現(xiàn)模糊查詢 LIKE CONCAT('%', "搜索詞", '%')
問題:
1. 搜索詞是一個整體,不能拆分
2. 效率低,不會用到索引
學ES之后:
在ES中存儲一些數(shù)據(jù)(id,商品名字,圖片,價格,瀏覽量)
二、ES環(huán)境搭建
- 下載
ES下載地址:https://www.elastic.co/cn/downloads/elasticsearch
7.6.1版本:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip - 解壓
在bin目錄中 雙擊啟動 elasticsearch.bat - 訪問
http://127.0.0.1:9200/
a.數(shù)據(jù)可視化界面(elasticsearch head)
- 下載
提前安裝 node.js
github 下載: https://github.com/mobz/elasticsearch-head/
github 加速器: https://github.ur1.fun/ - 解壓
從界面訪問 9200 服務會出現(xiàn)跨域問題
在 config 目錄中的 elasticsearch.yml 文件中配置
在目錄地址輸入cmd進入命令行# 開啟跨域 http.cors.enabled: true # 所有人訪問 http.cors.allow-origin: "*"
npm install npm run start
- 訪問
http://127.0.0.1:9100/
b.安裝可視化kibana組件
- 下載
下載版本要與ES版本一致
下載地址:https://www.elastic.co/cn/downloads/kibana
7.6.1版本
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-windows-x86_64.zip - 解壓,漢化kibana
修改config目錄下的kibana.yml文件,加一句i18n.locale: "zh-CN"
- 啟動
雙擊bin目錄下的kibana啟動 - 訪問
http://127.0.0.1:5601/
c.安裝ik分詞器插件
- 下載
7.6.1版本:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch- analysis-ik-7.6.1.zip - 解壓
在elasticsearch-7.6.1\plugins目錄下創(chuàng)建名稱為ik的文件夾,將解壓后的文件復制到 ik 目錄 - 測試
在 kibana 的 DevTools 中測試GET _analyze { "analyzer": "ik_max_word",//分詞器類型 "text": "社會新聞"http://分詞內(nèi)容 }
三、ES基本概念
回顧Mysql:
數(shù)據(jù)庫–>表(表名,字段)–>記錄(一行數(shù)據(jù))
ES:
索引:同類型文檔的集合(表)
文檔:一行數(shù)據(jù)就是一個文檔Json格式(Mysql中的一行記錄)
字段:Json中的字段(屬性)
映射:索引中文檔的約束,字段名稱,類型
正向索引和倒向索引
正向索引:
正向索引以文檔編號為視角看待索引詞,即通過文檔編號去找索引詞。具體來說,正向索引表以文檔的ID為關鍵字,表中記錄文檔中每個字的位置信息。在查找時,掃描表中每個文檔中字的信息,直到找出所有包含查詢關鍵字的文檔。正向索引的優(yōu)點是結構簡單,建立和維護都比較方便。但如果需要查詢某個關鍵詞,需要掃描所有文檔,效率較低。
倒排索引:
倒排索引以字或詞為關鍵字進行索引,即從關鍵詞到文檔的映射關系。表中關鍵字所對應的記錄表項記錄了出現(xiàn)這個字或詞的所有文檔,一個表項就是一個字表段,記錄該文檔的ID和字符在該文檔中出現(xiàn)的位置情況。倒排索引的優(yōu)點是查詢效率高,因為可以一次性獲取所有包含關鍵詞的文檔。但它的建立和維護相對復雜。
a.ES索引庫操作
創(chuàng)建索引庫
PUT /news
{
"mappings": {
"properties": {
"id":{
"type": "integer",
"index": false
},
"title":{
"type": "text",
"analyzer": "ik_smart"
},
"img":{
"type": "keyword",
"index": false
},
"pageview":{
"type": "integer",
"index": false
}
}
}
}
查詢索引庫
GET /news
修改索引庫
PUT /news/_mapping
{
"properties":{
"title":{
"type":"text",
"analyzer":"ik_smart"
}
}
}
刪除索引庫
DELETE /news
b.ES文檔操作
新增文檔
POST /news/_doc/10
{
"id":10,
"title":"標題",
"img":"eee.jpg",
"count":205
}
查詢文檔
GET /news/_doc/5
刪除文檔
DELETE /news/_doc/9
修改文檔文章來源:http://www.zghlxwxcb.cn/news/detail-808335.html
POST /news/_update/10
{
"doc": {
"count":500,
"img":"b.png",
"title":"標題"
}
}
搜索文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-808335.html
GET /news/_search
{
"query": {
"match": {
"title": "反向消費"
}
}
}
四、SpringBoot集成ES
- 搭建
官網(wǎng):https://www.elastic.co/guide/en/elasticsearch/client/index.html
指定版本,版本必須與安裝的 ES 版本一致,在pom.xml中添加<properties> <java.version>1.8</java.version> <elasticsearch.version
到了這里,關于ES(檢索數(shù)據(jù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!