ElasticSearch7.6安裝與基礎操作

最近在學習elasticsearch軟件,並搭建一個簡單的查詢服務。所以在此記錄所有最近使用elasticsearch的流程。
首先貼出官方文檔鏈接,網上的資料太雜,還是官方的靠譜(吐槽一下,官方文檔的鏈接有時打不開)。
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

安裝elasticsearch7.6.1

由於當前es的最新版本是es7.6.1且我使用的是centos系統,所以我這裏下載的是elasticsearch-7.6.1-linux-x86_64.tar.gz。下載後解壓到你想安裝的地方即可(注意不要使用root賬戶,否則後面啓動時會報錯)。

tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz

注意,該版本的es中已經集成了java包,所以不需要額外去下載配置Java。解壓後直接運行es文件夾中bin目錄下的elasticsearch二進制文件即可。

./elasticsearch-7.6.1/bin/elasticsearch

我這裏由於系統配置問題,報瞭如下錯誤:

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

接下來我們修改下系統的默認配置:
1)針對錯誤[1],打開limits.conf文件

sudo vim /etc/security/limits.conf

在文件末尾處加上:

*  soft  nofile  65535
*  hard  nofile  65535

修改limits.conf配置
2) 針對錯誤[2],打開sysctl.conf文件

sudo vim /etc/sysctl.conf

在文件末尾加上:

vm.max_map_count = 262144

修改配置後重啓,然後再運行二進制文件看到終端打印started就成功了。

./elasticsearch-7.6.1/bin/elasticsearch

啓動es成功
如果想讓局域網內的其他主機訪問該服務,就修改下es的yml文件:

vim ./elasticsearch-7.6.1/config/elasticsearch.yml

這裏要將network.host設置成0.0.0.0,注意冒號後有空格

network.host: 0.0.0.0

設置es yml文件
配置完後重啓es,在打開瀏覽器訪問:ip+端口號(默認9200),就能看到es返回的信息。
訪問es服務

安裝ik分詞器

es自帶的默認分詞器對於中文分詞就是簡單粗暴的將中文語句分成一個個漢字,明顯這樣是不合理的,所以這裏下載針對中文分詞的ik分詞器,下載鏈接如下。
https://github.com/medcl/elasticsearch-analysis-ik/releases
注意下載的版本要與我們安裝的es版本對應,我們這裏下載的是v7.6.1所以ik也要下載v7.6.1版本。這裏直接下載elasticsearch-analysis-ik-7.6.1.zip。下載後先到es目錄下的plugins目錄下創建ik目錄,然後將下載好的ik壓縮包解壓到剛剛創建的ik目錄中即可。重啓es後我們能夠看到ik分詞器已載入。
載入ik分詞器

設置es賬號密碼登錄

  1. 首先設置X-Pack
    打開es的yml配置文件:
vim ./elasticsearch-7.6.1/config/elasticsearch.yml

在文件末尾加上如下配置信息:

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  1. 設置密碼
    執行es的bin目錄下的elasticsearch-setup-passwords二進制文件設置密碼
./elasticsearch-7.6.1/bin/elasticsearch-setup-passwords interactive
Enter password for [elastic]:
Reenter password for [elastic]:
Passwords do not match.
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

設置密碼後,再使用瀏覽器訪問es服務就提示先輸入賬號密碼,就是剛剛設置的elastic的賬戶密碼。

安裝kibana

kibana是es官方推薦的es可視化工具,類似於Navicat for mysql工具,方便我們操作es並查看es中的數據。(elasticsearch-head也是es的常見可視化工具,有興趣的可以瞭解下)下載同樣直接再es的官網就能下載,這裏也注意下版本kibana-7.6.1-linux-x86_64.tar.gz,和我們下載的es版本保持一致是7.6.1,接着將他解壓到你想放的位置。

tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz

然後對kibana進行配置,同樣打開yml文件(在剛解壓的文件夾裏):

vim ./kibana-7.6.1-linux-x86_64/config/kibana.yml

這裏就簡單配置了server.host讓局域網內其他設備可見,elasticsearch.hosts爲部署es服務的主機ip以及端口號,還有上一步中設置的登錄賬號密碼。
配置kibana.yml
接着啓動kibana服務:

./kibana-7.6.1-linux-x86_64/bin/kibana

啓動後我們打開瀏覽器,輸入部署kibana服務的主機IP+端口號(默認5601)
輸入剛剛設置的elastic賬號密碼就能登錄進去。登錄進去後打開dev tool,測試下我們剛剛裝的ik分詞器,通過右側的返回結果,我們能夠看到ik分詞效果還是很不錯的。
在kibana中測試ik分詞器

關於如何使用kibana可視化工具,可參考官方文檔。
https://www.elastic.co/guide/cn/kibana/current/introduction.html

es常用操作

創建index並設置mapping

這裏假設我要創建一個名爲test的index(es7中的index可以理解爲mysql中的一張表,不建議使用type屬性了),注意setting中的number_of_replicas設置的是0,因爲我這裏使用的是單機,沒有使用集羣。還有在es中創建index後一般是無法在修改mapping了,想修改setting的話需要先關閉index才能修改,具體可參考這個鏈接。在setting中設置了默認的analyzer爲ik_max_word,在mapping中設置了我們要存儲的元素“name”,“class”和“icon”且這三個字段都設置爲“text”類型。創建後右側返回成功的信息。
創建一個index

同義詞加載

1)首先在es的config目錄下創建analysis文件夾

mkdir ./elasticsearch-7.6.1/config/analysis

2)創建保存同義詞的txt文檔

touch ./elasticsearch-7.6.1/config/analysis/synonyms.txt

3)然後在synonyms.txt文件中添加同義詞(注意一定要使用utf-8編碼),我這裏就添加了一行。

西紅柿,番茄=>聖女果

4)修改setting中的分析器
因爲我們剛剛創建了索引 test,所以修改setting需要先關閉index
close index
寫着修改setting,注意在analysis中定義了filter其中的synonym是自定義的過濾器,在自定義過濾器中載入了剛剛創建的同義詞txt文檔。接着在analyzer的default分析器中調用自定義filter即可。
change analysis
修改完setting後開啓index
open index
5)接着在test中插入了兩條數據,一條name爲番茄,一條name爲聖女果,接着我們查詢name爲西紅柿的字段,發現同義詞全部被查詢到。
query test

插入數據

插入數據這裏使用的是POST方法,注意我們創建名爲test的index後,系統會自動創建一個名爲_doc的type,所以這裏請求url的test後有個_doc,最後的1是我們傳入的_id參數(這裏的_id是一個唯一標識符),如果不傳入這個參數系統會自動生成一個_id。接着我們傳入name,class以及icon參數。
插入數據
如果不指定_id系統會自動生成一個_id
插入數據不傳_id

更新數據

更新數據官方給了兩種方法,一種是更新整個文檔,一種是更新部分文檔。
更新整個文檔:這是使用的PUT方法,注意需要在url中指定更新的文檔_id
update_all

部分更新文檔:這裏使用的是POST方法,注意更新的內容要在doc結構中且只需要給出更新的內容部分即可。
update_section

查詢數據

es的查詢方式非常豐富,沒有做不到的只有想不到的,具體查看官方文檔,這裏給個基礎實例:
這裏就直接查詢name="1"的文檔,右側是返回的信息,在hits的hits中是查詢文檔信息。
search

刪除數據

指定刪除某一文檔:指定刪除某一文檔需要指定刪除文檔的_id
delete1
根據查詢結構刪除文檔:這裏可以根據查詢結果去刪除文檔,示例中的match_all代表刪除該index下的所有文檔。
delete2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章