參考1:Elastic Search 入門 - 知乎
參考2:Ubuntu上安裝ElasticSearch_ubuntu elasticsearch-CSDN博客
1、ElasticSearch安裝
1.1安裝JDK,省略,之前已安裝過
1.2創(chuàng)建ES用戶
創(chuàng)建用戶:sudo useradd esuser
設(shè)置密碼:sudo passwd esuser
1.3?下載ElasticSearch安裝包
Ubuntu上下載:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz
然后解壓:
tar -xvzf elasticsearch-7.11.1-linux-x86_64.tar.gz
1.4配置
配置jvm.options
vi config/jvm.options
配置elasticsearch.yml:
node.name: node-1 #配置當(dāng)前es節(jié)點(diǎn)名稱(默認(rèn)是被注釋的,并且默認(rèn)有一個節(jié)點(diǎn)名)
cluster.name: my-application #默認(rèn)是被注釋的,并且默認(rèn)有一個集群名
path.data: /home/lighthouse/es/data # 數(shù)據(jù)目錄位置
path.logs: /home/lighthouse/es/logs # 日志目錄位置
network.host: 0.0.0.0 #綁定的ip:默認(rèn)只允許本機(jī)訪問,修改為0.0.0.0后則可以遠(yuǎn)程訪問cluster.initial_master_nodes: ["node-1", "node-2"] #默認(rèn)是被注釋的 設(shè)置master節(jié)點(diǎn)列表 用逗號分隔
根據(jù)以上設(shè)置的path.data和path.logs內(nèi)容,需要在/home/lighthouse/目錄下創(chuàng)建es目錄,以及在es目錄下創(chuàng)建文件data和logs。
?ElasticSearch的配置信息:
屬性名?? ?說明
cluster.name?? ?配置elasticsearch的集群名稱,默認(rèn)是elasticsearch。建議修改成一個有意義的名稱。
node.name?? ?節(jié)點(diǎn)名,es會默認(rèn)隨機(jī)指定一個名字,建議指定一個有意義的名稱,方便管理
path.conf?? ?設(shè)置配置文件的存儲路徑,tar或zip包安裝默認(rèn)在es根目錄下的config文件夾,rpm安裝默認(rèn)在/etc/ elasticsearch
path.data?? ?設(shè)置索引數(shù)據(jù)的存儲路徑,默認(rèn)是es根目錄下的data文件夾,可以設(shè)置多個存儲路徑,用逗號隔開
path.logs?? ?設(shè)置日志文件的存儲路徑,默認(rèn)是es根目錄下的logs文件夾
path.plugins?? ?設(shè)置插件的存放路徑,默認(rèn)是es根目錄下的plugins文件夾
bootstrap.memory_lock?? ?設(shè)置為true可以鎖住ES使用的內(nèi)存,避免內(nèi)存進(jìn)行swap
network.host?? ?設(shè)置bind_host和publish_host,設(shè)置為0.0.0.0允許外網(wǎng)訪問
http.port?? ?設(shè)置對外服務(wù)的http端口,默認(rèn)為9200。
transport.tcp.port?? ?集群結(jié)點(diǎn)之間通信端口
discovery.zen.ping.timeout?? ?設(shè)置ES自動發(fā)現(xiàn)節(jié)點(diǎn)連接超時的時間,默認(rèn)為3秒,如果網(wǎng)絡(luò)延遲高可設(shè)置大些
discovery.zen.minimum_master_nodes?? ?主結(jié)點(diǎn)數(shù)量的最少值 ,此值的公式為:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結(jié)點(diǎn),那么這里要設(shè)置為2
?
1.5?修改/etc/security/limits.conf文件 增加配置
sudo vi /etc/security/limits.conf
在文件最后,增加如下配置:
* soft nofile 65536
* hard nofile 65536
在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完畢之后,執(zhí)行命令: sysctl -p
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
1.6啟動ElasticSearch
啟動前先給esuser用戶權(quán)限,然后把用戶切換到esuser用戶
sudo chgrp -R lighthouse ./es
sudo chown -R lighthouse ./es
sudo chmod 777 es
su esuser
?
?
啟動ElasticSearch
./bin/elasticsearch
?
然后參考資料修改了bin/elasticsearch-env文件,讓es使用es目錄里的jdk,
?重新啟動,報錯如下:
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /home/lighthouse/es/logs/my-application.log
?把該釋放的內(nèi)存(可以使用free -h查看)都釋放出來后,重新啟動,成功了。
可以看到綁定了兩個端口:
-
9300:集群節(jié)點(diǎn)間通訊接口
-
9200:客戶端訪問接口
訪問http://43.138.0.199:9200/在客戶端可以看到以下信息:
2、學(xué)習(xí)es,索引的維護(hù)
2.1創(chuàng)建索引
http://43.138.0.199:9200/student
PUT
2.2、獲得索引信息
http://43.138.0.199:9200/student
GET
?2.3刪除索引
http://43.138.0.199:9200/city
DELETE
3、為索引添加數(shù)據(jù)
增刪改查
RESTful接口URL的格式:
http://localhost:9200/<index>/<type>/[<id>]
3.1、學(xué)生索引中添加小學(xué)學(xué)生類型的數(shù)據(jù)
?http://43.138.0.199:9200/student/xiaoxue/1
Post方式
Body如下:
{
? ? "name":"張三",
? ? "age":7
}
3.2、查看單個學(xué)生數(shù)據(jù)
?http://43.138.0.199:9200/student/xiaoxue/1
GET
3.3、修改學(xué)生信息
http://43.138.0.199:9200/student/xiaoxue/1
put
{
? ? "name": "張三",
? ? "age": 9
}
再次查看該學(xué)生信息,截圖如下:
3.4查詢所有學(xué)生列表
再添加一個學(xué)生,可以驗(yàn)證列表中的多個結(jié)果。
然后,調(diào)用查詢接口:
get接口
http://43.138.0.199:9200/student/_search
繼續(xù)驗(yàn)證分頁查詢
GET方式,from表示從哪個數(shù)據(jù)開始讀?。ǖ谝粋€數(shù)據(jù)就是0,以此類推),size表示讀取多少個數(shù)據(jù)。
http://43.138.0.199:9200/student/_search?from=0&size=2
然后查詢第2頁的數(shù)據(jù),from要改成2,如下所示:
GET
http://43.138.0.199:9200/student/_search?from=2&size=2
繼續(xù)驗(yàn)證查詢條件:
GET
http://43.138.0.199:9200/student/_search?from=0&size=2
body如下:
{
? "query": {
? ? "match": {
? ? ? "name": "張三"
? ? }
? }
}
結(jié)果如下:
有關(guān)查詢條件的說明如下:
?有關(guān)查詢結(jié)果的說明如下:
4、在ES中執(zhí)行SQL查詢ES數(shù)據(jù)
POST
http://43.138.0.199:9200/_sql?format=txt
Body如下:
{
? "query": "SELECT name,age FROM student order by name desc limit 6"
}
執(zhí)行結(jié)果如下:
參數(shù)format的取值說明如下:
format | Axxept HTTP Header | 說明 |
csv | text/csv | 逗號分隔 |
json | application/json | JSON格式 |
tsv | text/tab-separated-values | tab分隔 |
txt | text/pain | 文本格式 |
yaml | application/yaml | yaml格式 |
vbor | application/vbor | 簡潔的二進(jìn)制 |
smile | application/smile | 類似cbor的二進(jìn)制 |
返回json格式的數(shù)據(jù),驗(yàn)證如下:
?返回數(shù)據(jù)如下:
{
"columns": [
{
"name": "name",
"type": "text"
},
{
"name": "age",
"type": "long"
}
],
"rows": [
[
"李四",
8
],
[
"張三",
9
],
[
"66",
7
],
[
"44",
7
],
[
"44",
7
],
[
"33",
7
]
]
}
5、根據(jù)SQL生成DSL語句
POST
http://43.138.0.199:9200/_sql/translate
Body如下:
{
? "query": "SELECT name,age FROM student order by name desc limit 6"
}
執(zhí)行結(jié)果如下:
{
"size": 6,
"_source": {
"includes": [
"name",
"age"
],
"excludes": []
},
"sort": [
{
"name.keyword": {
"order": "desc",
"missing": "_first",
"unmapped_type": "keyword"
}
}
]
}
拿來查詢數(shù)據(jù)
?可見,可以拿來查詢數(shù)據(jù)。
6、安裝分詞插件以及使用
在查看安裝了的插件列表時,突然報需要java11,然后我安裝了java11,并配置了環(huán)境變量。
參考:ubuntu安裝JDK11-CSDN博客
Elasticsearch提供插件機(jī)制對系統(tǒng)進(jìn)行擴(kuò)展
以安裝analysis-icu這個分詞插件為例
在線安裝:
#查看已安裝插件
bin/elasticsearch-plugin list
#安裝插件
bin/elasticsearch-plugin install analysis-icu
#刪除插件
bin/elasticsearch-plugin remove analysis-icu
注意:安裝和刪除完插件后,需要重啟ES服務(wù)才能生效。
測試分詞效果
POST _analyze
{
"analyzer":"icu_analyzer",
"text":"中華人民共和國"
}
執(zhí)行結(jié)果要貼下:文章來源:http://www.zghlxwxcb.cn/news/detail-817249.html
http://43.138.0.199:9200/_analyze
Post
body如下:
{
? ? "analyzer":"icu_analyzer",
? ? "text":"中華人民共和國"
}
結(jié)果如下:
{
"tokens": [
{
"token": "中華",
"start_offset": 0,
"end_offset": 2,
"type": "<IDEOGRAPHIC>",
"position": 0
},
{
"token": "人民",
"start_offset": 2,
"end_offset": 4,
"type": "<IDEOGRAPHIC>",
"position": 1
},
{
"token": "共和國",
"start_offset": 4,
"end_offset": 7,
"type": "<IDEOGRAPHIC>",
"position": 2
}
]
}
測試分詞效果
#ES的默認(rèn)分詞設(shè)置是standard,會單字拆分
POST _analyze
{
"analyzer":"standard",
"text":"中華人民共和國"
}
#ik_smart:會做最粗粒度的拆
POST _analyze
{
"analyzer": "ik_smart",
"text": "中華人民共和國"
}
#ik_max_word:會將文本做最細(xì)粒度的拆分
POST _analyze
{
"analyzer":"ik_max_word",
"text":"中華人民共和國"
}
執(zhí)行結(jié)果要貼下:
創(chuàng)建索引時可以指定IK分詞器作為默認(rèn)分詞器
PUT /es_db
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}
執(zhí)行結(jié)果要貼下:
文章來源地址http://www.zghlxwxcb.cn/news/detail-817249.html
到了這里,關(guān)于elastic search入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!