Elasticsearch系列教程(一):安裝

Elasticsearch簡介

Elasticsearch是一個(gè)高度可擴(kuò)展的開源全文搜索和分析引擎阵面。它允許您快速疚鲤,近實(shí)時(shí)地存儲(chǔ)腥寇,搜索和分析大量數(shù)據(jù)。它通常用作底層引擎/技術(shù)氮惯,為具有復(fù)雜搜索功能和要求的應(yīng)用程序提供支持叮雳。

Elasticsearch可用于以下場景:

  • 您運(yùn)行在線網(wǎng)上商店,允許您的客戶搜索您銷售的產(chǎn)品妇汗。在這種情況下帘不,您可以使用Elasticsearch存儲(chǔ)整個(gè)產(chǎn)品目錄和庫存,并為它們提供搜索和自動(dòng)填充建議杨箭。
  • 您希望收集日志或交易數(shù)據(jù)寞焙,并且希望分析和挖掘此數(shù)據(jù)以查找趨勢,統(tǒng)計(jì)信息互婿,摘要或異常捣郊。在這種情況下,您可以使用Logstash(Elasticsearch / Logstash / Kibana堆棧的一部分)來收集慈参,聚合和解析數(shù)據(jù)呛牲,然后讓Logstash將此數(shù)據(jù)提供給Elasticsearch。一旦數(shù)據(jù)在Elasticsearch中懂牧,您就可以運(yùn)行搜索和聚合來挖掘您感興趣的任何信息侈净。
  • 您運(yùn)行價(jià)格警報(bào)平臺(tái),允許精通價(jià)格的客戶指定一條規(guī)則僧凤,例如“我有興趣購買特定的電子產(chǎn)品畜侦,如果小工具的價(jià)格在下個(gè)月內(nèi)從任何供應(yīng)商降至X美元以下,我希望收到通知” 躯保。在這種情況下旋膳,您可以刮取供應(yīng)商價(jià)格,將其推入Elasticsearch并使用其反向搜索(Percolator)功能來匹配價(jià)格變動(dòng)與客戶查詢途事,并最終在發(fā)現(xiàn)匹配后將警報(bào)推送給客戶验懊。

基本概念

近乎實(shí)時(shí)(Near Realtime)

Elasticsearch是一個(gè)近乎實(shí)時(shí)的搜索平臺(tái)。這意味著從索引文檔到可搜索文檔的時(shí)間有一點(diǎn)延遲(通常是一秒)尸变。

集群(Cluster)

集群是一個(gè)或多個(gè)節(jié)點(diǎn)(服務(wù)器)的集合义图,它們共同保存您的整個(gè)數(shù)據(jù),并提供跨所有節(jié)點(diǎn)的聯(lián)合索引和搜索功能召烂。集群有唯一名稱標(biāo)識(shí)碱工,默認(rèn)情況下為“elasticsearch”。此名稱很重要,因?yàn)槿绻?jié)點(diǎn)設(shè)置為按名稱加入群集怕篷,則該節(jié)點(diǎn)只能是集群的一部分历筝。

確保不要在不同的環(huán)境中重用相同的集群集名稱,否則最終會(huì)導(dǎo)致節(jié)點(diǎn)加入錯(cuò)誤的集群廊谓。

節(jié)點(diǎn)(Node)

節(jié)點(diǎn)是作為集群一部分的單個(gè)服務(wù)器梳猪,存儲(chǔ)數(shù)據(jù)并參與群集的索引和搜索功能。就像集群一樣蒸痹,節(jié)點(diǎn)由名稱標(biāo)識(shí)春弥,默認(rèn)情況下,該名稱是在啟動(dòng)時(shí)分配給節(jié)點(diǎn)的隨機(jī)通用唯一標(biāo)識(shí)符(UUID)电抚。如果不需要默認(rèn)值惕稻,可以定義所需的任何節(jié)點(diǎn)名稱竖共。此名稱對于管理目的非常重要蝙叛,您可以在其中識(shí)別網(wǎng)絡(luò)中哪些服務(wù)器與Elasticsearch集群中的哪些節(jié)點(diǎn)相對應(yīng)。

索引(Index)

索引是具有某些類似特征的文檔集合公给。例如借帘,您可以擁有客戶數(shù)據(jù)的索引,產(chǎn)品目錄的另一個(gè)索引以及訂單數(shù)據(jù)的另一個(gè)索引淌铐。索引由名稱標(biāo)識(shí)(必須全部小寫)肺然,此名稱用于在對其中的文檔執(zhí)行索引,搜索腿准,更新和刪除操作時(shí)引用索引际起。

在單個(gè)群集中,您可以根據(jù)需要定義任意數(shù)量的索引吐葱。

文檔(Document)

文檔是可以編制索引的基本信息單元街望。例如,您可以為單個(gè)客戶提供文檔弟跑,為單個(gè)產(chǎn)品提供另一個(gè)文檔灾前,為單個(gè)訂單提供另一個(gè)文檔。該文檔以JSON(JavaScript Object Notation)表示孟辑,JSON是一種普遍存在的互聯(lián)網(wǎng)數(shù)據(jù)交換格式哎甲。

在索引/類型中,您可以根據(jù)需要存儲(chǔ)任意數(shù)量的文檔饲嗽。請注意炭玫,盡管文檔實(shí)際上駐留在索引中,但實(shí)際上必須將文檔編入索引/分配給索引中的類型貌虾。

分片和副本(Shards & Replicas)

索引可能存儲(chǔ)大量可能超過單個(gè)節(jié)點(diǎn)的硬件限制的數(shù)據(jù)吞加。例如,占用1TB磁盤空間的十億個(gè)文檔的單個(gè)索引可能不適合單個(gè)節(jié)點(diǎn)的磁盤,或者可能太慢而無法單獨(dú)從單個(gè)節(jié)點(diǎn)提供搜索請求榴鼎。

為了解決這個(gè)問題伯诬,Elasticsearch提供了將索引細(xì)分為多個(gè)稱為分片的功能。創(chuàng)建索引時(shí)巫财,只需定義所需的分片數(shù)即可盗似。每個(gè)分片本身都是一個(gè)功能齊全且獨(dú)立的“索引”,可以托管在集群中的任何節(jié)點(diǎn)上平项。

分片很重要赫舒,主要有兩個(gè)原因:

  • 它允許您水平拆分/縮放內(nèi)容量
  • 它允許您跨分片(可能在多個(gè)節(jié)點(diǎn)上)分布和并行化操作,從而提高性能/吞吐量
    分片的分布方式以及如何將其文檔聚合回搜索請求的機(jī)制完全由Elasticsearch管理闽瓢,對用戶而言是透明的接癌。

在可以隨時(shí)發(fā)生故障的網(wǎng)絡(luò)/云環(huán)境中,強(qiáng)烈建議使用故障轉(zhuǎn)移機(jī)制扣讼,以防分片/節(jié)點(diǎn)以某種方式脫機(jī)或因任何原因消失缺猛。為此,Elasticsearch允許您將索引的分片的一個(gè)或多個(gè)副本制作成所謂的副本分片或簡稱副本椭符。

副本集很重要荔燎,主要有兩個(gè)原因:

  • 它在分片/節(jié)點(diǎn)發(fā)生故障時(shí)提供高可用性。因此销钝,請務(wù)必注意有咨,副本分片永遠(yuǎn)不會(huì)在與從中復(fù)制的原始/主分片相同的節(jié)點(diǎn)上分配。
  • 它允許您擴(kuò)展搜索量/吞吐量蒸健,因?yàn)榭梢栽谒懈北旧喜⑿袌?zhí)行搜索座享。

總而言之,每個(gè)索引可以拆分為多個(gè)分片似忧。索引也可以復(fù)制為零(表示沒有副本)或更多次渣叛。復(fù)制后,每個(gè)索引都將具有主分片(從中復(fù)制的原始分片)和副本分片(主分片的副本)橡娄。

默認(rèn)情況下诗箍,Elasticsearch中的每個(gè)索引都分配了5個(gè)主分片和1個(gè)副本,這意味著如果群集中至少有兩個(gè)節(jié)點(diǎn)挽唉,則索引將包含5個(gè)主分片和另外5個(gè)副本分片(1個(gè)完整副本)滤祖,總計(jì)為每個(gè)索引10個(gè)分片。

每個(gè)Elasticsearch分片都是Lucene索引瓶籽。單個(gè)Lucene索引中可以包含最大數(shù)量的文檔匠童。截止LUCENE-5843,限制是2,147,483,519(= Integer.MAX_VALUE - 128)文檔塑顺。您可以使用_cat/shardsAPI 監(jiān)控分片大小汤求。

安裝(Installation)

Elasticsearch至少需要Java 8俏险,Java安裝教程請參考JavaPlatform, Standard Edition安裝指導(dǎo)
在安裝Elasticsearch之前扬绪,請先檢查Java版本:

java -version

echo $JAVA_HOME

[root@XXXX cusD]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@XXXX cusD]# echo $JAVA_HOME
/usr/lib/jdk1.8.0_181

一旦我們設(shè)置了Java竖独,我們就可以下載并運(yùn)行Elasticsearch。二進(jìn)制文件可以www.elastic.co/downloads與過去發(fā)布的所有版本一起提供挤牛。對于每個(gè)版本莹痢,您可以選擇zip或tar存檔,包DEB或RPM包墓赴,或Windows MSI安裝包竞膳。

Tar 安裝示例

為簡單起見,讓我們使用tar文件诫硕。

我們按如下方式下載Elasticsearch 6.4.1 tar:

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz

然后提取如下:

tar -xvf elasticsearch-6.4.1.tar.gz

然后它會(huì)在當(dāng)前目錄中創(chuàng)建一堆文件和文件夾坦辟。然后我們進(jìn)入bin目錄,如下所示:

cd elasticsearch-6.4.1/bin

現(xiàn)在我們準(zhǔn)備啟動(dòng)我們的節(jié)點(diǎn)和單個(gè)集群:

./elasticsearch

結(jié)果報(bào)錯(cuò)章办!

ES安裝問題

1.用戶授權(quán)問題

[root@izwz9fwifc2eniq3lbdzmgz bin]#  ./elasticsearch
[2018-09-27T16:45:56,071][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.1.jar:6.4.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.1.jar:6.4.1]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.1.jar:6.4.1]
    ... 6 more

因?yàn)榘踩珕栴}elasticsearch 不讓用root用戶直接運(yùn)行.

解決辦法

新增用戶

useradd -m 用戶名

passwd 用戶名

輸入密碼

授權(quán)

chown -R 用戶名 es的安裝目錄

切換用戶

su 用戶名

切換到es安裝目錄下

./elasticsearch

2.file descriptors too low

max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

解決辦法:切換root賬戶

vi /etc/security/limits.conf


# End of file
* soft nofile 65536
* hard nofile 65536

3.max virtual memory too low

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決辦法:切換root賬戶 vim /etc/sysctl.conf

增加一行 vm.max_map_count=505300

接著執(zhí)行 sysctl -p

4.其他機(jī)器訪問失敗

Es安裝目錄/config/elasticsearch.yml文件

vi /config/elasticsearch.yml

# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#

去掉network.host注釋锉走,ip地址改為 0.0.0.0。

network.host: 0.0.0.0

檢測是否安裝成功

切換Es賬戶纲菌,切換到es安裝目錄下

./elasticsearch


[root@XXX bin]# useradd -m fan113
[root@XXX bin]# passwd fan113
Changing password for user fan113.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@XXXX bin]# chrow -R fan113 /cusD/elasticsearch-6.4.1
bash: chrow: command not found
[root@XXXX bin]# chown -R fan113 /cusD/elasticsearch-6.4.1
[root@XXXX bin]# su fan113
//中間忽略
[fan113@izwz9fwifc2eniq3lbdzmgz bin]$ ./elasticsearch
//結(jié)果已成功挠日,顯示信息忽略。

本地訪問

默認(rèn) http://localhost:9200/?pretty

[root@XXXX ~]# curl http://localhost:9200/?pretty
{
  "name" : "f1mValJ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "ugL60wjJQPaIZw3NRE9aKg",
  "version" : {
    "number" : "6.4.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "e36acdb",
    "build_date" : "2018-09-13T22:18:07.696808Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

返回上述結(jié)果翰舌,即為成功。

外網(wǎng)訪問

先開啟阿里云9200端口映射冬骚。

[root@XXXX ~]# curl www.XXXX.cn:9200
{
  "name" : "f1mValJ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "ugL60wjJQPaIZw3NRE9aKg",
  "version" : {
    "number" : "6.4.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "e36acdb",
    "build_date" : "2018-09-13T22:18:07.696808Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

返回上述結(jié)果椅贱,即為成功。

參考資料

Linux命令大全

http://man.linuxde.net/

http://man.linuxde.net/userdel

http://man.linuxde.net/useradd

http://man.linuxde.net/chown

https://www.cnblogs.com/mingc/p/7591287.html

https://blog.csdn.net/m290345792/article/details/55002695

https://www.linuxidc.com/Linux/2013-07/87371.htm

Elasticsearch教程

https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

https://blog.csdn.net/tototuzuoquan/article/details/75579476

http://www.cnblogs.com/duanxuan/p/6473005.html

https://blog.csdn.net/qq_21387171/article/details/53577115

https://help.aliyun.com/knowledge_detail/41334.html

https://www.cnblogs.com/zhi-leaf/p/8484337.html

本篇到此結(jié)束只冻,感謝觀看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庇麦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喜德,更是在濱河造成了極大的恐慌山橄,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舍悯,死亡現(xiàn)場離奇詭異航棱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)萌衬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門饮醇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秕豫,你說我怎么就攤上這事朴艰」坌睿” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵祠墅,是天一觀的道長侮穿。 經(jīng)常有香客問我,道長毁嗦,這世上最難降的妖魔是什么撮珠? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮金矛,結(jié)果婚禮上芯急,老公的妹妹穿的比我還像新娘。我一直安慰自己驶俊,他們只是感情好娶耍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饼酿,像睡著了一般榕酒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上故俐,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天想鹰,我揣著相機(jī)與錄音,去河邊找鬼药版。 笑死辑舷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的槽片。 我是一名探鬼主播何缓,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼还栓!你這毒婦竟也來了碌廓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤剩盒,失蹤者是張志新(化名)和其女友劉穎谷婆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辽聊,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纪挎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了身隐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷区。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贾铝,靈堂內(nèi)的尸體忽然破棺而出隙轻,到底是詐尸還是另有隱情埠帕,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布玖绿,位于F島的核電站敛瓷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏斑匪。R本人自食惡果不足惜呐籽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚀瘸。 院中可真熱鬧狡蝶,春花似錦、人聲如沸贮勃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寂嘉。三九已至奏瞬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泉孩,已是汗流浹背硼端。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寓搬,地道東北人珍昨。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像订咸,于是被迫代替她去往敵國和親曼尊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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

  • 博客原文一博客原文二 翻譯作品脏嚷,水平有限,如有錯(cuò)誤瞒御,煩請留言指正父叙。原文請見 官網(wǎng)英文文檔 起步 Elasticse...
    rabbitGYK閱讀 3,228評論 0 68
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評論 2 89
  • 簡介 Elasticsearch是一個(gè)高可擴(kuò)展的開源全文搜索和分析引擎,它允許存儲(chǔ)肴裙、搜索和分析大量的數(shù)據(jù)趾唱,并且這個(gè)...
    零度沸騰_yjz閱讀 5,521評論 0 8
  • 1.在碼云創(chuàng)建項(xiàng)目 2.在vscode中:git remote add origin https://git.os...
    OnReading閱讀 321評論 0 0
  • 看到一句話,使人疲憊的不是遠(yuǎn)方的高山蜻懦,而是鞋里的一粒沙甜癞。我很疲憊,鞋子里好多沙宛乃。
    loyoco閱讀 216評論 0 0