我在 Windows 11(带有 Ubuntu 22.04 LTS)上使用 WSL,并尝试在其上使用 Elasticsearch。当我运行 时
sudo systemctl start elasticsearch.service
,我收到错误:
System has not been booted with systemd as init system (PID 1). Can't operate.
我知道systemctl
在 WSL 上不可用。因此,我尝试了它的替代方案,service elasticsearch start
但随后出现了错误:elasticsearch: unrecognized service
。
我知道这个网站上有类似的问题,但我已经尝试了替代命令,但没有用。所以,请帮我解决这个问题。
答案1
虽然我确信可以在 WSL 上的 Ubuntu 上直接启动 Elasticsearch,但是 (a) 我还没有这样做,并且 (b) 可能有更简单的方法。
弹性搜索提供 Docker 镜像以及所有依赖项。
为了安装和运行它,我使用了稍微修改过的Elasticsearch 文档对于 WSL:
安装 Docker Desktop for Windows
重启 Ubuntu
使用以下方法增加 mmap 限制:
sudo sysctl -w vm.max_map_count=262144
看此 Stack Overflow 问题/答案有关如何坚持这一点的信息。
使用以下命令为 Elasticsearch 创建 Docker 网络:
docker network create elastic
使用以下命令启动 Elasticsearch:
docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.4.1
第一次运行时,它也会拉取图像,因此会有轻微的延迟。后续运行不会发生这种情况。
记下(即复制到记事本或其他程序)显示的令牌,因为一旦其他操作开始发生(例如运行 Kibana),它们就会开始滚动出页面。
通过以下方式在 WSL 上的单独 Ubuntu 会话中(例如 Windows 终端中的新选项卡)运行 Kibana:
docker run --name kib-01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.4.1
完成后,请记住使用以下方法清理旧容器:
docker ps --all docker remove <exited_container_name_or_id>