docker安装Elasticsearch 8.x步骤

docker安装Elasticsearch 8.x步骤

简介

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticseach已经进化成了一个全能型的数据产品,使用场景包括:日志实时分析、搜索服务、数据分析、数据监控、查询服务、后端存储。

Elastic 8.x版改进了矢量搜索功能,原生支持现代自然语言处理模型,简化了数据上线过程,以及精简了安全防护体验。在速度、扩展幅度、相关性和简便性方面,均有巨大的提升。

使用案例

ElasticSearch在腾讯的应用非常广泛,主要有三个:日志实时分析场景、搜索服务、时序数据分析。

  • 搜索服务:腾讯文档基于ES做全文检索,电商客户拼多多、蘑菇街等大量的商品搜索都是基于 ES。
  • 日志分析:ES应用最广泛的领域,支持全栈的日志分析,包括各种应用日志、数据库日志、用户行为日志、网络数据、安全数据等等。ES拥有一套完整的日志解决方案,可以秒级实现从采集到展示。
  • 时序分析:典型的场景是监控数据分析,比如云监控,整个腾讯云的监控都是基于 ES 的。此外还包括物联网场景,也有大量的时序数据。时序数据的特点是写入吞吐量特别高,ES 支持的同时也提供了丰富的多维统计分析算子。

安装elasticsearch

演示机器是VirtualBox 4.3,虚拟机Linux Centos 7,已安装docker以及其他必须的组件。

# 下载镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.2.0

# 运行容器
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" 镜像ID
  • ES_JAVA_OPTS参数指定JVM堆内存大小
  • discovery.type参数设置为单节点部署

如果参数设置不合理,可以删除容器再安装:

# 停止容器
docker stop elasticsearch
# 删除容器
docker rm elasticsearch

配置防火墙

防火墙加入9200端口,保证外网可以访问。

# 添加端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload

访问接口

由于8.x版本默认开启了ssl认证,必须访问https页面https://192.168.1.9:9200/,页面成功打开后需要输入默认用户名和密码,浏览器响应如下:

{
  "name" : "5111f6a13907",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "Ea0KCTj1RdK-DpqjlV84cQ",
  "version" : {
    "number" : "8.2.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "b174af62e8dd9f4ac4d25875e9381ffe2b9282c5",
    "build_date" : "2022-04-20T10:35:10.180408517Z",
    "build_snapshot" : false,
    "lucene_version" : "9.1.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

如果访问http地址,浏览器无响应,可以通过查询日志确定原因。

# 查询容器日志
docker logs elasticsearch

出现如下日志,确定不支持http请求。

"@timestamp":"2022-05-06T10:27:23.336Z", "log.level": "WARN", "message":"received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/172.17.0.2:9200, remoteAddress=/172.17.0.1:42900}", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch[d4815aec585a][transport_worker][T#1]","log.logger":"org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4HttpServerTransport","elasticsearch.cluster.uuid":"RtWXsg7WQ6iW5Pj1W6i1QA","elasticsearch.node.id":"D086XXgZSnyMjMepeEGyGw","elasticsearch.node.name":"d4815aec585a","elasticsearch.cluster.name":"docker-cluster"}

如有需要可以关闭SSL和安全校验,操作步骤如下:

# 进入容器
docker exec -it elasticsearch /bin/bash
# 配置目录
cd config
# 编辑yml
vi elasticsearch.yml

修改elasticsearch.yml的配置项xpack.security.http.ssl.enable为false,关闭ssl访问;xpack.security.enabled为flase,关闭安全校验。

重置密码

Elasticsearch的默认用户是elastic,在安装日志中可以找到,但是建议重置密码。

# 进入容器
docker exec -it elasticsearch /bin/bash
# 工具目录bin
cd bin
# 重置密码
elasticsearch-reset-password -u elastic

控制台提示信息:

This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]

输入y继续生成新密码

Password for the [elastic] user successfully reset.
New value: uCHxv3mUz*3+DT-m8QZv

最终的用户名和密码是:elastic / uCHxv3mUz*3+DT-m8QZv

测试REST API

创建索引“member”命令

curl -X PUT 'http://192.168.1.9:9200/member'

索引创建成功返回:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "member"
}

查询索引“member”命令

curl -X PUT 'http://192.168.1.9:9200/member'

索引查询成功返回:

{
    "member": {
        "aliases": {},
        "mappings": {},
        "settings": {
            "index": {
                "routing": {
                    "allocation": {
                        "include": {
                            "_tier_preference": "data_content"
                        }
                    }
                },
                "number_of_shards": "1",
                "provided_name": "member",
                "creation_date": "1651901573923",
                "number_of_replicas": "1",
                "uuid": "iMmYZE-XSE2-ewsLg2pDJw",
                "version": {
                    "created": "8020099"
                }
            }
        }
    }
}

参考

http://t.zoukankan.com/wxxf-p-15045970.html
https://www.bilibili.com/read/cv7694434
https://www.pianshen.com/article/29761364843/
https://blog.csdn.net/wtl1992/article/details/124072854
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注