一、什么是Elasticsearch?
? ? ? ?ES是一個開源分布式搜索引擎可以用來實現(xiàn)搜索、日志統(tǒng)計、分析、系統(tǒng)監(jiān)控,ES易于擴展,可以輕松的擴展到上百臺服務器,處理PB(1PB?= 1024TB,1TB = 1024GB)級別的數(shù)據(jù)。ES自身攜帶分布式管理功能,但僅支持JSON文件模式。
二、下載安裝步驟
(一)、安裝elasticsearch容器
1.拉鏡像 docker pull 鏡像盡量大于 7.12.1
docker pull elasticsearch:7.12.1
2.拉取es 網(wǎng)絡
????????docker network create es-network
3.找到usr在usr目錄創(chuàng)建文件夾elasticsearch,進去在創(chuàng)建plugins、data文件夾
.????????
4.在usr目錄修改權(quán)限
5.創(chuàng)建容器(elasticsearch?)
? ? ? ? ps: 如果運行不了檢查是否有多余空格
docker run -d \
--name elasticsearch \
--net=es-network \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e xpack.security.authc.api_key.enabled=true ?\
-e "ES_JAVA_OPTS=-Xms50m -Xmx512m" \
-v es-data:/usr/elasticsearch/data \
-v es-plugins:/usr/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.12.1
docker run -d \? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //后臺運行
--name elasticsearch \? ? ? ? ? ? ? ? // 給容器起一個別名
--net=es-network \? ? ? ? ? ? ? ? ? ? ? ? //指定容器連接到名為 es-network 的網(wǎng)絡上
-p 9200:9200 \? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//主機與容器之間的端口映射,9200用于程序調(diào)用使用
-p 9300:9300 \??????????????????????? ??//主機與容器之間的端口映射,9300用于es集群之間的通信
-e "discovery.type=single-node" \? ? ? ? //配置單節(jié)點啟動發(fā)現(xiàn)的環(huán)境變量
-e xpack.security.authc.api_key.enabled=true ?\? ? ? ? ?//啟動api秘鑰認證功能
-e "ES_JAVA_OPTS=-Xms50m -Xmx512m"\????????????????//指定java虛擬機最小堆內(nèi)存最小50M,最大512M
-v es-data:/usr/elasticsearch/data \? ? ? ? ? ? ? ? //掛載數(shù)據(jù)目錄卷
-v es-plugins:/usr/elasticsearch/plugins \? ? ? ? //掛載插件目錄卷
docker.elastic.co/elasticsearch/elasticsearch:7.12.1? ? ? ? //指定運行的鏡像:版本
?6.校驗是否安裝成功
curl http://localhost:9200
7.給es設(shè)置訪問密碼
? ? ? ? 7.1:進入容器(elasticsearch)找到? ? /usr/share/elasticsearch/config
docker exec -it 2df4aaf8e08b /bin/bash
????????
? ? ? ? 7.2:通過vi編輯elasticsearch.yml文件
? ? ? ? 在后面添加
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
????????
? 7.3:ctrl + p + q? 回到宿主機再重啟ES容器
docker restart 2df4aaf8e08b
7.4:再次進入容器
docker exec -it 2df4aaf8e08b /bin/bash
然后運行這個,設(shè)置密碼(輸入多次,建議一致)
./bin/elasticsearch-setup-passwords interactive
7.5:再次回到宿主機再重啟ES容器
校驗是否成功??
http:// ip :9200
(二)、安裝kibana容器
1.拉取kibana鏡像 :版本和elasticsearch一致
? ? ? ? ? ? ? ? docker pull kibana:7.12.1
2.創(chuàng)建網(wǎng)絡
????????docker network create kibana-network
3.執(zhí)行容器創(chuàng)建命令
docker run -d \
--name kibana \
--net=kibana-network \
-e ELASTICSEARCH_HOSTS=http://es的服務器ip地址:9200 \
-p 5601:5601 \
docker.elastic.co/kibana/kibana:7.12.1
docker run -d \
--name kibana \
--net=kibana-network \
-e ELASTICSEARCH_HOSTS=http://es的服務器ip地址:9200 \
-p 5601:5601 \
docker.elastic.co/kibana/kibana:7.12.1
4.開放 5601 端口
5.校驗安裝成功訪問 http://ip:5601
6.進入kibana容器
docker exec -it 容器id /bin/bash
7.找到? /usr/share/kibana/config? 這個目錄下的kibana.yml文件
8.修改配置文件
? ? ? ??vim kibana.yml
? ? ? ? ?在最后一行回車加入
i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "密碼"
9.退出容器,重啟容器
10.? 訪問 http://ip:5601
三、ES理論
3.1名詞解析
1.索引:
? ? ? ? 在ES中一個索引對應一組相關(guān)文檔的存儲單元,可以被看作是一種類似于數(shù)據(jù)庫中表結(jié)構(gòu),
? ?用于存儲相類似的文檔,每個文檔都屬于一個索引,索引中的文檔用來被搜索或分析。
2.索引分片:
? ? ? ? 索引分片是將一個完整的索引分成多個的過程,每個分片本身就是一個獨立的索引,擁有自? ? ? ?己的設(shè)置、映射、文檔。ES通過將索引,劃分為多個分片來允許大規(guī)模數(shù)據(jù)存儲,并且能夠水? ? ? ?平擴展,每個分片可以分布在集群的不同節(jié)點上,默認情況下每個索引包含五個主分片。
3.索引副本:
? ? ? ? ?索引副本是每個分片的一個復制品,用于提供冗余和故障的恢復,副本分布在不同的節(jié)點上,從而增加了系統(tǒng)的可靠性和容錯能力。? ?????
3.2ElasticSearch核心概念
? ? 1.節(jié)點
? ? ? ??節(jié)點是集群中的單個服務器,用于存儲數(shù)據(jù)并參與集群的索引和搜索功能。每個節(jié)點都有自己的名稱和唯一標識符,
? ? ?2.集群
? ? ? ? 集群是由一個或多個節(jié)點組成的一組服務器,它們共同存儲項目的整個數(shù)據(jù),集群提供了可用性和橫向擴展性。
? ? ?3.分片和復制
? ? ? ? 分片是將索引中的數(shù)據(jù)分割成多個部分,用于提高性能和擴展性,每個分片可以被存儲在集群中的一個或多個節(jié)點上。
? ? ? ? 復制是為了數(shù)據(jù)的高可用性和容錯性,每個分片都會有一個或多個副本分片,這些分片會被存儲在不同的節(jié)點上。
? ? ?4.索引:
? ? ? ? ? 索引是用于存儲數(shù)據(jù)的地方,類似于關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)庫,他是一種用于存儲相似性質(zhì)的文檔的數(shù)據(jù)結(jié)構(gòu)。
?? ?5.類型
? ? ? ? 類型在ES 6.0之前用于組織索引內(nèi)部文檔的一種方式,在ES 7.0版本之后已經(jīng)被廢棄,推薦使用單一索引多字段代替。
? ? 6.文檔
? ? ? ? 文檔是ES中的基本數(shù)據(jù)單元,類似于關(guān)系型數(shù)據(jù)庫的行,每個文檔都是一個JSON對象,它們被存儲在索引中并可以被搜索。
? ? 7.字段
? ? ? ? 字段是ES中文檔的組成部分,類似于關(guān)系型數(shù)據(jù)庫中的列,每個字段都有自己的數(shù)據(jù)類型(比如 文本型、數(shù)值型等),并且包含特定的數(shù)據(jù)。
? ? 8.映射
? ? ? ? 映射定義了索引中的每個字段的數(shù)據(jù)類型和屬性,它相當于關(guān)系型數(shù)據(jù)庫中的模式,告訴ES 如何處理索引的每個字段。
3.3?創(chuàng)建索引
PUT /my_es
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"title":{"type":"text"},
"content":{"type":"text"},
"author":{"type": "text"},
"time":{"type": "date"}
}
}
}
PUT /my_es? // 索引名(數(shù)據(jù)庫名)
{
? "settings": {
? ? "number_of_shards": 2,? ? ?//主分片
? ? "number_of_replicas": 2? ? // 副分片
? },?
? "mappings": {
? ? "properties": {
? ? ? "title":{"type":"text"? // 設(shè)置類型},? ?//屬性
? ? ? "content":{"type":"text"},
? ? ? "author":{"type": "text"},
? ? ? "time":{"type": "date"}
? ? }
? }
}
3.4 添加文檔
POST /my_es/_doc
{
"title":"無故兇人",
"content":"一女子無緣無故兇人給出的理由居然你別給我講話",
"author":"manyue",
"time":"2023-12-18T10:30:01"
}
??語法規(guī)則:
_doc : 用于早期的ES版本中,同一個索引中單獨集合映射類型從8.X版本開始已全面配齊。
_index : 創(chuàng)建新索引。? ?index 是創(chuàng)建一個命名空間,將相關(guān)文檔聚集在一起。
_create :創(chuàng)建新索引。? ?create 是創(chuàng)建一個新的文檔,并將其添加到指定索引中
_update : 用于更新文檔中的一部分內(nèi)容。
_delete : 刪除文檔。
3.5 查找文檔
GET /my_es/_search
3.6 條件查詢
GET /my_es/_search
{
"query": {"match": {
"title": "白象" // "字段":"查找內(nèi)容"
}}
}
?3.7?多條件查詢
GET /taobao_goods/_search
{
"query": {
"bool": { // 多條件查詢的一種方式
"must": [ //必須滿足以下條件相當于sql 中的 AND
{"match": {"name": "白象"}},
{"match": {"description": "酸"}}
]
}
}
}
? ? ? ? 1. must : 必須都匹配相當于邏輯中的 AND
? ? ? ? 2. must_not : 必須條件都不匹配 相當于邏輯中的 not?
? ? ? ? 3.should : 表示條件可以匹配 ,但不是必須相當于邏輯上的or
? ? ? ? 4.filter : 表示條件必須匹配,常用于過濾操作
?3.8 返回結(jié)果
{
"took" : 1, // 操作花費的毫秒數(shù),請求耗時
"timed_out" : false, // 是否超時
"_shards" : { //分片信息(包含了成功的分片數(shù)量,和失敗的分片數(shù)量)
"total" : 2, // 總分片數(shù) (總命中數(shù))
"successful" : 2, // 搜索成功的分片數(shù)
"skipped" : 0, //沒有搜索或跳過的分片數(shù)
"failed" : 0 // 搜索失敗的分片數(shù)
},
"hits" : { // 搜索結(jié)果集
"total" : { // 返回多少數(shù)據(jù)
"value" : 1, // 一共 一條數(shù)據(jù)
"relation" : "eq" // 過濾語法
},
"max_score" : 0.5753642, // 最高匹配得分
"hits" : [
{
"_index" : "taobao_goods", // 索引名
"_type" : "_doc", // 文檔類型(8.0已棄用)
"_id" : "h3jtgIwBqohmmXpgoXch", // id (唯一標識符)
"_score" : 0.5753642, // 匹配度得分
"_source" : { // 實際內(nèi)容
"id" : "3",
"name" : "白象牛肉面",
"description" : "好吃",
"price" : "4.5",
"stock" : "27"
}
}
]
}
}
3.9 更新內(nèi)容(修改數(shù)據(jù))
_doc : 覆蓋方式完成更新(8.0之后移除)
_update : 非覆蓋方式完成更新
POST /taobao_goods/_doc/h3jtgIwBqohmmXpgoXch
{
"price":"3"
}
//這種寫法會重寫原有數(shù)據(jù)結(jié)構(gòu)(慎用)
ps : h3jtgIwBqohmmXpgoXch _id(唯一標識符)
POST /taobao_goods/_update/h3jtgIwBqohmmXpgoXch
{
"doc":{
"price":"3"
}
}
// 這種只會修改對應的字段
// 如果沒有這個字段會直接添加這個字段
4.0 刪除文檔
// 通過 ES id 刪除
DELETE /taobao_goods/_doc/hnjtgIwBqohmmXpgKHfX // (_id)
// 通過 mysql id 刪除
POST /taobao_goods/_delete_by_query
{
"query":{
"match":{"id":"3"}
}
}
// 刪除所有
POST /taobao_goods/_delete_by_query
{
"query":{
"match_all":{}
}
}
可視化工具
es-client: ES查詢客戶端,elasticsearch可視化工具文章來源:http://www.zghlxwxcb.cn/news/detail-773028.html
ES 核心思想
文章來源地址http://www.zghlxwxcb.cn/news/detail-773028.html
到了這里,關(guān)于Elasticsearch下載安裝配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!