whatzyt

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在使用 Elasticsearch 之前,首先要保证虚拟机或云服务器有足够的内存;

Elasticsearch 因其底层原理,非常吃内存;


 1、docker 下载 Elasticsearch、kibana

docker pull elasticsearch:7.10.1
docker pull kibana:7.10.1

 elasticsearch 和 kibana 的版本号一定要一致!

版本可以在 https://hub.docker.com/_/kibana?tab=tags&page=1 中查询

 

2、创建 elasticsearch 映射目录

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

 

3、修改配置文件,让所有 ip 地址均可访问

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

 

4、创建、启动、映射目录文件

docker run --name es -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \
-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.10.1

# 9200:用于发送 http 请求的端口号;
# 9300:es 分布式情况下的通讯端口号;
# -e "discovery.type=single-node":es 以单节点运行;
# -e ES_JAVA_OPTS="-Xms64m -Xmx512m":设置 es 启动参数,不设置的话 es 会占用大量的内存空间;
# -v 相关指令:config 映射配置文件;data 映射数据;plugins 映射 es 可以安装的插件;
# -d elasticsearch:7.10.1:启动 es;

 

5、修改配置文件的权限

此时使用 docker ps -a 可以看到启动的 es 的状态为 Exited;

使用 docker logs es 查看日志:

ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
    at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
    at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:388)
    at java.base/java.nio.file.Files.createDirectory(Files.java:694)
    at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:801)
    at java.base/java.nio.file.Files.createDirectories(Files.java:787)
    at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:275)
    at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:212)
    at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:272)
    at org.elasticsearch.node.Node.<init>(Node.java:362)
    at org.elasticsearch.node.Node.<init>(Node.java:289)
    at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227)
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
For complete error details, refer to the log at /usr/share/elasticsearch/logs/elasticsearch.log

错误说是访问的文件没有权限;

也就是映射出来的 /mydata/elasticsearch 中的文件没有权限;

使用下面的指令进行修改:

chmod -R 777 /mydata/elasticsearch 

 

6、重新启动 es 容器

docker restart es

 

7、使用浏览器访问 es 的 9200 端口

使用浏览器访问 es 所在服务器的 9200 端口,如果出现下面的 json 字符串,表示 es 正常运行;

{
  "name" : "5cc88f927be3",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "pLcairiDSBO4OKL1wxhbLw",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
    "build_date" : "2020-12-05T01:00:33.671820Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

8、启动 kibnan 

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.1:9200 -p 5601:5601 -d kibana:7.10.1

注意,这里的 172.17.0.1 需要自行配置;

如果安装的 es 和 kibana 在同一台服务器上,使用 docker inspect es 查看 es 容器的 Gateway,填写对应的 ip 地址;

如果 es 和 kibana 不在同一个服务器,使用 es 所在服务器的 ip 地址替换 172.17.0.1;

 

9、使用浏览器访问服务器的 5601 端口

第一次安装的话,这个页面之前还有一个页面,我忘记截屏了;

 

posted on 2022-04-11 20:01  whatzyt  阅读(261)  评论(0编辑  收藏  举报