Elasticsearch 安裝以及基本api操作

安裝

elasticsearch單機(jī)版安裝

#創(chuàng)建elsearch用戶酱鸭,Elasticsearch不支持root用戶運(yùn)行
useradd elsearch
#解壓安裝包
tar -xvf elasticsearch-6.5.4.tar.gz -C /es/
#修改配置文件
vim conf/elasticsearch.yml
network.host: 172.16.55.185 #綁定的地址
#說(shuō)明:在Elasticsearch中如果,network.host不是localhost或者127.0.0.1的話哼勇,就會(huì)認(rèn)為是生產(chǎn)環(huán)
境蛙酪,會(huì)對(duì)環(huán)境的要求比較高,我們的測(cè)試環(huán)境不一定能夠滿足,一般情況下需要修改2處配置咪惠,如下:
#1:修改jvm啟動(dòng)參數(shù)
vim conf/jvm.options
-Xms128m #根據(jù)自己機(jī)器情況修改
-Xmx128m
#2:?jiǎn)蝹€(gè)進(jìn)程中的最大線程數(shù)
vim /etc/sysctl.conf
vm.max_map_count=655360

#啟動(dòng)ES服務(wù)
su - elsearch
cd bin
./elasticsearch 或 ./elasticsearch -d #后臺(tái)系統(tǒng)

# curl -X "GET" "http://localhost:9200"進(jìn)行測(cè)試,看到如下信息淋淀,就說(shuō)明ES啟動(dòng)成功了
{
  "name" : "7ss4V6j",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "HTI7KMajQ6qtzXippnKSUw",
  "version" : {
    "number" : "6.5.4",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "d2ef93d",
    "build_date" : "2018-12-17T21:17:40.758843Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

docker版本安裝

#拉取鏡像
docker pull elasticsearch:6.5.4
#創(chuàng)建容器
docker create --name elasticsearch --net host -e "discovery.type=single-node" -e "network.host=172.18.0.1" elasticsearch:6.5.4
#啟動(dòng)
docker start elasticsearch
#查看日志
docker logs elasticsearch

elasticsearch-head 插件工具安裝

  • 源碼安裝遥昧,通過(guò)npm run start啟動(dòng)(不推薦)
  • 通過(guò)docker安裝(推薦)
  • 通過(guò)chrome插件安裝(推薦)
  • 通過(guò)ES的plugin方式安裝(不推薦)

通過(guò)docker安裝

#拉取鏡像
docker pull mobz/elasticsearch-head:5
#創(chuàng)建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
#啟動(dòng)容器
docker start elasticsearch-head

由于前后端分離開(kāi)發(fā),所以會(huì)存在跨域問(wèn)題,需要在服務(wù)端做CORS的配置炭臭,如下:
vim elasticsearch.yml

http.cors.enabled: true
http.cors.allow-origin: "*"

chrome插件方式安裝

打開(kāi)chrome的應(yīng)用商店永脓,即可安裝 安裝鏈接

基本概念

索引

  • 索引(index)是Elasticsearch對(duì)邏輯數(shù)據(jù)的邏輯存儲(chǔ),所以它可以分為更小的部分鞋仍。
  • 可以把索引看成關(guān)系型數(shù)據(jù)庫(kù)的表常摧,索引的結(jié)構(gòu)是為快速有效的全文索引準(zhǔn)備的,特別是它不存儲(chǔ)原始值威创。
  • 可以把Elasticsearch的索引看成MongoDB里的一個(gè)集合落午。
  • Elasticsearch可以把索引存放在一臺(tái)機(jī)器或者分散在多臺(tái)服務(wù)器上,每個(gè)索引有一或多個(gè)分片(shard)肚豺,每個(gè)分片可以有多個(gè)副本(replica)溃斋。

文檔

  • 存儲(chǔ)在Elasticsearch中的主要實(shí)體叫文檔(document)。用關(guān)系型數(shù)據(jù)庫(kù)來(lái)類比的話吸申,一個(gè)文檔相當(dāng)于數(shù)據(jù)庫(kù)表中的一行記錄梗劫。
  • Elasticsearch和MongoDB中的文檔類似,都可以有不同的結(jié)構(gòu)呛谜,但Elasticsearch的文檔中在跳,相同字段必須有相同類型。
  • 文檔由多個(gè)字段組成隐岛,每個(gè)字段可能多次出現(xiàn)在一個(gè)文檔里猫妙,這樣的字段叫多值字段(multivalued)。
    每個(gè)字段的類型聚凹,可以是文本割坠、數(shù)值、日期等妒牙。字段類型也可以是復(fù)雜類型彼哼,一個(gè)字段包含其他子文檔或者
    數(shù)組。

映射

  • 所有文檔寫進(jìn)索引之前都會(huì)先進(jìn)行分析湘今,如何將輸入的文本分割為詞條敢朱、哪些詞條又會(huì)被過(guò)濾,這種行為叫
    做映射(mapping)。一般由用戶自己定義規(guī)則。

文檔類型

  • 在Elasticsearch中运挫,一個(gè)索引對(duì)象可以存儲(chǔ)很多不同用途的對(duì)象。例如蚓哩,一個(gè)博客應(yīng)用程序可以保存文章和評(píng)論。
  • 每個(gè)文檔可以有不同的結(jié)構(gòu)上渴。
  • 不同的文檔類型不能為相同的屬性設(shè)置不同的類型岸梨。例如喜颁,在同一索引中的所有文檔類型中,一個(gè)叫title的字段必須具有相同的類型曹阔。

elasticsearch 集群搭建

elasticsearch的集群是由多個(gè)節(jié)點(diǎn)組成的半开,通過(guò)cluster.name設(shè)置集群名稱,并且用于區(qū)分其他的集群赃份,每個(gè)節(jié)點(diǎn)通過(guò)node.name指定節(jié)點(diǎn)的名稱稿茉。

在elasticsearch中,節(jié)點(diǎn)的主要類型有4中:

  • master節(jié)點(diǎn)
    • 配置文件中node.master屬性為true(默認(rèn)為true)芥炭,就有資格被選為master節(jié)點(diǎn)。
    • master節(jié)點(diǎn)用于控制整個(gè)集群的操作恃慧,比如創(chuàng)建或刪除索引园蝠,管理其他非master節(jié)點(diǎn)。
  • data節(jié)點(diǎn)
    • 配置文件中node.data屬性為true(默認(rèn)為true)痢士,就有資格被設(shè)置成data節(jié)點(diǎn)
    • data節(jié)點(diǎn)主要用于執(zhí)行數(shù)據(jù)相關(guān)的操作彪薛,比如文檔的CRUD。
  • 客戶端節(jié)點(diǎn)
    • 配置文件中node.master屬性和node.data屬性均為false
    • 該節(jié)點(diǎn)不能作為master節(jié)點(diǎn)怠蹂,也不能作為data節(jié)點(diǎn)善延。
    • 可以作為客戶端節(jié)點(diǎn),用于響應(yīng)用戶的請(qǐng)求城侧,把請(qǐng)求轉(zhuǎn)發(fā)到其他節(jié)點(diǎn)
  • 部落節(jié)點(diǎn)
    • 當(dāng)一個(gè)節(jié)點(diǎn)配置tribe.*的時(shí)候易遣,它是一個(gè)特殊的客戶端,它可以連接多個(gè)集群嫌佑,在所有連接的集群上執(zhí)行搜索和其他操作豆茫。

使用docker搭建集群:

mkdir /home/es-cluster
cd /home/es-cluster
mkdir node01
mkdir node02

#復(fù)制安裝目錄下的elasticsearch.yml、jvm.option文件屋摇,作如下修改:

# node01的配置
cluster.name: es-cluster
node.name: node01
node.master: true
node.data: true
network.host: 172.18.0.1
discovery.zen.ping.unicast.hosts: ["172.18.0.1"]
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"

#node02的配置:
cluster.name: es-itcast-cluster
node.name: node02
node.master: false
node.data: true
network.host: 172.18.0.1
http.port: 9201
discovery.zen.ping.unicast.hosts: ["172.18.0.1"]
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"

#創(chuàng)建容器
docker create --name es-node01 --net host -v /home/es-cluster/node01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node01/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/node01/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

docker create --name es-node02 --net host -v /home/es-cluster/node02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node02/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/node02/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

#啟動(dòng)容器
docker start es-node01 && docker logs -f es-node01
docker start es-node02 && docker logs -f es-node02

#提示:?jiǎn)?dòng)時(shí)會(huì)報(bào)文件無(wú)權(quán)限操作的錯(cuò)誤揩魂,需要對(duì)node01和node02進(jìn)行chmod 777 的操作
sudo chmod 777 node01 -R

#啟動(dòng)報(bào)錯(cuò): “max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]”, 設(shè)置max_map_count值(Linux)
sudo sysctl -w vm.max_map_count=262144

故障測(cè)試

為了測(cè)試故障轉(zhuǎn)移炮温,需要再向集群中添加一個(gè)節(jié)點(diǎn)火脉,并且將所有節(jié)點(diǎn)的node.master設(shè)置為true。

docker create --name es-node03 --net host -v /home/es-cluster/node03/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node03/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/node03/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

docker stop es-node01 es-node02
docker start es-node01 es-node02 es-node03

安裝IK分詞器

cd /home/es-cluster/ik
#將IK的zip壓縮包解壓到該目錄
#停止柒啤、刪除現(xiàn)有容器
docker stop es-node01 es-node02 es-node03
docker rm es-node01 es-node02 es-node03
#重新創(chuàng)建容器倦挂,注意ik目錄的掛載
docker create --name es-node01 --net host -v /home/es-cluster/node01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node01/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/ik:/usr/share/elasticsearch/plugins/ik -v /home/es-cluster/node01/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

docker create --name es-node02 --net host -v /home/es-cluster/node02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node02/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/ik:/usr/share/elasticsearch/plugins/ik -v /home/es-cluster/node02/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

docker create --name es-node03 --net host -v /home/es-cluster/node03/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es-cluster/node03/jvm.options:/usr/share/elasticsearch/config/jvm.options -v /home/es-cluster/ik:/usr/share/elasticsearch/plugins/ik -v /home/es-cluster/node03/data:/usr/share/elasticsearch/data elasticsearch:6.5.4

RESTful API

待完善......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市白修,隨后出現(xiàn)的幾起案子妒峦,更是在濱河造成了極大的恐慌,老刑警劉巖兵睛,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肯骇,死亡現(xiàn)場(chǎng)離奇詭異窥浪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)笛丙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門漾脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人胚鸯,你說(shuō)我怎么就攤上這事骨稿。” “怎么了姜钳?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坦冠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我哥桥,道長(zhǎng)辙浑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任拟糕,我火速辦了婚禮判呕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘送滞。我一直安慰自己侠草,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布犁嗅。 她就那樣靜靜地躺著边涕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褂微。 梳的紋絲不亂的頭發(fā)上奥吩,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蕊梧,去河邊找鬼霞赫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肥矢,可吹牛的內(nèi)容都是我干的端衰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼甘改,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼旅东!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起十艾,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抵代,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后忘嫉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荤牍,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡案腺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了康吵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劈榨。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晦嵌,靈堂內(nèi)的尸體忽然破棺而出同辣,到底是詐尸還是另有隱情,我是刑警寧澤惭载,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布旱函,位于F島的核電站,受9級(jí)特大地震影響描滔,放射性物質(zhì)發(fā)生泄漏陡舅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一伴挚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灾炭,春花似錦茎芋、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至铡原,卻和暖如春偷厦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燕刻。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工只泼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卵洗。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓请唱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親过蹂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子十绑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容