在 Docker 中本地运行 Elasticsearch(无安全)

编辑

在 Docker 中本地运行 Elasticsearch(无安全)编辑

不要将这些说明用于生产部署

此页面上的说明仅供 本地开发使用。不要将这些说明用于生产部署,因为它们不安全。虽然这种方法对于实验和学习很方便,但您永远不应该在生产环境中以这种方式运行服务。

以下命令可帮助您快速启动一个单节点 Elasticsearch 集群,以及 Docker 中的 Kibana。请注意,如果您不需要 Kibana UI,则可以跳过这些说明。

我什么时候会使用这种设置?编辑

如果您想快速启动 Elasticsearch(和 Kibana)以进行本地开发或测试,请使用此设置。

例如,您可能

  • 想要运行一个快速测试以查看功能如何工作。
  • 遵循需要 Elasticsearch 集群的教程或指南,例如我们的 快速入门指南
  • 使用不同的工具(如 Dev Tools 控制台、cURL 或 Elastic 编程语言客户端)实验 Elasticsearch API。
  • 快速启动一个 Elasticsearch 集群以测试可执行的 Python 笔记本 在本地。

先决条件编辑

如果您没有安装 Docker,请 下载并安装 Docker Desktop 用于您的操作系统。

设置环境变量编辑

配置以下环境变量。

export ELASTIC_PASSWORD="<ES_PASSWORD>"  # password for "elastic" username
export KIBANA_PASSWORD="<KIB_PASSWORD>"   # Used _internally_ by Kibana, must be at least 6 characters long

创建 Docker 网络编辑

要运行 Elasticsearch 和 Kibana,您需要创建一个 Docker 网络

docker network create elastic-net

运行 Elasticsearch编辑

使用以下命令启动 Elasticsearch 容器

docker run -p 127.0.0.1:9200:9200 -d --name elasticsearch --network elastic-net \
  -e ELASTIC_PASSWORD=$ELASTIC_PASSWORD \
  -e "discovery.type=single-node" \
  -e "xpack.security.http.ssl.enabled=false" \
  -e "xpack.license.self_generated.type=trial" \
  docker.elastic.co/elasticsearch/elasticsearch:8.14.2

运行 Kibana(可选)编辑

要运行 Kibana,您必须首先在 Elasticsearch 容器中设置 kibana_system 密码。

# configure the Kibana password in the ES container
curl -u elastic:$ELASTIC_PASSWORD \
  -X POST \
  https://127.0.0.1:9200/_security/user/kibana_system/_password \
  -d '{"password":"'"$KIBANA_PASSWORD"'"}' \
  -H 'Content-Type: application/json'

使用以下命令启动 Kibana 容器

docker run -p 127.0.0.1:5601:5601 -d --name kibana --network elastic-net \
  -e ELASTICSEARCH_URL=http://elasticsearch:9200 \
  -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
  -e ELASTICSEARCH_USERNAME=kibana_system \
  -e ELASTICSEARCH_PASSWORD=$KIBANA_PASSWORD \
  -e "xpack.security.enabled=false" \
  -e "xpack.license.self_generated.type=trial" \
  docker.elastic.co/kibana/kibana:8.14.2

该服务使用试用许可证启动。试用许可证使 Elasticsearch 的所有功能在 30 天的试用期内可用。试用期结束后,许可证将降级为基本许可证,该许可证永久免费。如果您希望跳过试用并使用基本许可证,请将 xpack.license.self_generated.type 变量的值设置为 basic。有关不同许可证之间功能比较的详细信息,请参阅我们的 订阅页面

使用语言客户端连接到 Elasticsearch编辑

要从语言客户端连接到 Elasticsearch 集群,您可以使用 elastic 用户名和您在环境变量中设置的密码进行基本身份验证。

您将使用以下连接详细信息

  • Elasticsearch 端点: https://127.0.0.1:9200
  • 用户名: elastic
  • 密码: $ELASTIC_PASSWORD(您在环境变量中设置的值)

例如,要使用 Python elasticsearch 客户端连接

import os
from elasticsearch import Elasticsearch

username = 'elastic'
password = os.getenv('ELASTIC_PASSWORD') # Value you set in the environment variable

client = Elasticsearch(
    "https://127.0.0.1:9200",
    basic_auth=(username, password)
)

print(client.info())

以下是一个使用基本身份验证的 curl 命令示例

curl -u elastic:$ELASTIC_PASSWORD \
  -X PUT \
  https://127.0.0.1:9200/my-new-index \
  -H 'Content-Type: application/json'

下一步编辑

使用我们的 快速入门指南 了解 Elasticsearch 的基础知识:如何添加数据并查询数据。

迁移到生产环境编辑

此设置不适合生产使用。对于生产部署,我们建议使用 Elastic Cloud 上的托管服务。 注册免费试用(不需要信用卡)。

否则,请参阅 安装 Elasticsearch 了解在自管理生产环境中安装 Elasticsearch 的各种选项,包括使用 Docker。