【ES從入門到實(shí)戰(zhàn)】二、全文檢索-ElasticSearch-Docker安裝ES

二、Docker 安裝

1、下載鏡像文件

下載elasticsearch

docker pull elasticsearch:7.4.2 # 存儲(chǔ)和檢索數(shù)據(jù)
在這里插入圖片描述

下載kibana

docker pull kibana:7.4.2 # 可視化檢索數(shù)據(jù)
在這里插入圖片描述

注意:elasticsearch 要和 kibana 的版本保持一致!

2、創(chuàng)建實(shí)例

1. ElasticSearch

mkdir -p /mydata/elasticsearch/config # 在mydata文件夾下創(chuàng)建es的config文件夾,將docker中es的配置掛載在外部,當(dāng)我們?cè)趌inux虛擬機(jī)中修改es的配置文件時(shí),就會(huì)同時(shí)修改docker中的es的配置
mkdir -p /mydata/elasticsearch/data #在mydata文件夾下創(chuàng)建es的data文件夾
echo "http.host:0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml # [http.host:0.0.0.0]允許任何遠(yuǎn)程機(jī)器訪問es,并將其寫入es的配置文件中

chmod -R 777 /mydata/elasticsearch/ # 保證權(quán)限問題
在這里插入圖片描述
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

# docker run --name elasticsearch 創(chuàng)建一個(gè)es容器并起一個(gè)名字;
# -p 9200:9200 將linux的9200端口映射到docker容器的9200端口,用來給es發(fā)送http請(qǐng)求
# -p 9300:9300 9300是es在分布式集群狀態(tài)下節(jié)點(diǎn)之間的通信端口  \ 換行符
# -e 指定一個(gè)參數(shù),當(dāng)前es以單節(jié)點(diǎn)模式運(yùn)行
# *注意,ES_JAVA_OPTS非常重要,指定開發(fā)時(shí)es運(yùn)行時(shí)的最小和最大內(nèi)存占用為64M和128M,否則就會(huì)占用全部可用內(nèi)存
# -v 掛載命令,將虛擬機(jī)中的路徑和docker中的路徑進(jìn)行關(guān)聯(lián)
# -d 后臺(tái)啟動(dòng)服務(wù)
在這里插入圖片描述

安裝完 elasticsearch 后我們來啟動(dòng)一下,會(huì)發(fā)現(xiàn)使用docker ps命令查看啟動(dòng)的容器時(shí)沒有找到我們的 es,這是因?yàn)槟壳?es 的配置文件的權(quán)限導(dǎo)致的,因此我們還需要修改一下 es 的配置文件的權(quán)限:

[root@10 config]# cd ../
[root@10 elasticsearch]# ls
config  data  plugins
[root@10 elasticsearch]# cll
bash: cll: command not found
[root@10 elasticsearch]# ll
total 0
drwxr-xr-x. 2 root root 31 May 21 14:55 config
drwxr-xr-x. 2 root root  6 May 21 14:52 data
drwxr-xr-x. 2 root root  6 May 21 15:14 plugins
[root@10 elasticsearch]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
53c0e82ded18        redis               "docker-entrypoint.s…"   6 weeks ago         Up 4 hours          0.0.0.0:6379->6379/tcp              redis
e1c1b5a6012e        mysql:5.7           "docker-entrypoint.s…"   6 weeks ago         Up 4 hours          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
[root@10 elasticsearch]# chmod -R 777 /mydata/elasticsearch/
[root@10 elasticsearch]# ll
total 0
drwxrwxrwx. 2 root root 31 May 21 14:55 config
drwxrwxrwx. 2 root root  6 May 21 14:52 data
drwxrwxrwx. 2 root root  6 May 21 15:14 plugins

在這里插入圖片描述

修改完文件權(quán)限后,我們使用docker start elasticsearch再次啟動(dòng) es,使用docker ps命令查看后發(fā)現(xiàn)容器還是沒有啟動(dòng),這是問什么呢?
我們使用docker logs elasticsearch看一下 es 的啟動(dòng)日志:

[root@10 elasticsearch]# docker logs elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2020-05-21 15:14:13,179 main ERROR No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];
        at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1097)
        at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1070)
        at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:83)
        at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
        at org.elasticsearch.cli.Command.main(Command.java:90)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]
        at org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken(XContentParserUtils.java:78)
        at org.elasticsearch.common.settings.Settings.fromXContent(Settings.java:617)
        at org.elasticsearch.common.settings.Settings.access$400(Settings.java:82)

上述錯(cuò)誤是由于我之前配置elasticsearch.yml文件的時(shí)候k-v鍵值對(duì)配置錯(cuò)誤導(dǎo)致的,查看 yml 文件會(huì)發(fā)現(xiàn)我配置的內(nèi)容是這樣的:

http.host:0.0.0.0

而實(shí)際上k-v鍵值對(duì)之間應(yīng)該有空格,注意 yml 配置文件中key: value格式冒號(hào)后面要跟一個(gè)空格。否則就會(huì)導(dǎo)致上面的錯(cuò)誤。
因此需要修改一下elasticsearch.yml文件,修改為:

http.host: 0.0.0.0

修改并保存之后再次使用docker start elasticsearch啟動(dòng) es,使用docker ps命令產(chǎn)看后可以看到我的 es 容器已經(jīng)啟動(dòng)起來了:

在這里插入圖片描述

在瀏覽器地址欄訪問http://192.168.56.10:9200/,可以看到 es 啟動(dòng)成功后返回類似下面的數(shù)據(jù):

在這里插入圖片描述

注意192.168.56.10是我的linux虛擬機(jī)的地址,讀者需要根據(jù)自己的虛擬機(jī)地址來進(jìn)行訪問


參考:
Elasticsearch Reference
elastic
全文搜索引擎 Elasticsearch 入門教程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容