侧边栏壁纸
  • 累计撰写 268 篇文章
  • 累计创建 140 个标签
  • 累计收到 16 条评论

目 录CONTENT

文章目录

给自己博客添加 Elasticsearch 实现全文搜索

Sherlock
2019-01-26 / 0 评论 / 0 点赞 / 2356 阅读 / 0 字
温馨提示:
本文最后更新于2024-06-20,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

经过调研,决定使用 Docker 来快速部署 Elasticsearch。

1.安装 Docker 和 Docker-Compose

笔者服务器是 CentOS 7 x64,参考了Get Docker CE for CentOSInstall Docker Compose安装。

安装 Docker

# Install Docker CE (using the repository)
## SET UP THE REPOSITORY
### 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
### 设置 stable repository(国内机器建议使用国内源,比如阿里云)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
### 安装 docker-ce
yum install docker-ce docker-ce-cli containerd.io
### 设置开机启动,并启动 Docker
systemctl enable docker
systemctl start docker
# 安装后使用以下命令测试(出现以下提示则安装成功)
## This message shows that your installation appears to be working correctly.
docker run hello-world

安装 Docker Compose

使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。具体使用可以参考Docker:Docker Compose 详解 - 简书

# 下载最新版本安装脚本
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加可执行权限
chmod +x /usr/local/bin/docker-compose
# 如果提示 docker-compose 命令不可用,则将其添加到PATH(笔者机器不需要)
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试
docker-compose --version

建议更换为docker的国内镜像源:

  • 1.24年6月份开始国内镜像大面积无法访问,参考博文:国内Docker不能下载镜像问题

  • 2.重启docker(添加配置文件后需要加载然后重启docker):

systemctl daemon-reload
systemctl restart docker
  • 3.查看docker使用的配置文件:
# 查看环境配置文件
systemctl show docker | grep EnvironmentFile
# EnvironmentFile=-/etc/sysconfig/docker (ignore_errors=yes)
# 查看服务启动文件位置:
systemctl show --property=FragmentPath docker
# FragmentPath=/usr/lib/systemd/system/docker.service
grep EnvironmentFile /usr/lib/systemd/system/docker.service
# EnvironmentFile=-/etc/sysconfig/docker

2.Docker 安装 Elasticsearch

可参考官方文档Install Elasticsearch with Docker

2.1 安装

# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.2

2.2 运行-开发模式 (快速)

2.2.1 先修改内存配置

直接运行报错了:(内存不够,docker默认分配的jvm内存太大了)

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca660000, 899284992, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid1.log

查找 jvm.options 文件位置

locate "jvm.options"
#/var/lib/docker/overlay2/573b40254a1429fcaeda561a8ff5f33eaace854395de9345226111fbb3ef8788/diff/usr/share/elasticsearch/config/jvm.options

根据各自服务器硬件配置,使用 vi 修改 jvm.options 中内存配置。

然后启动 Docker Elasticsearch:

docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" --name "es" docker.elastic.co/elasticsearch/elasticsearch:6.6.2

2.2.2 修改配置,解决跨域访问问题

# 先进入容器
docker exec -it es /bin/bash
# 进入后
ls config/
cd config/
# 编辑 elasticsearch.yml
vim elasticsearch.yml 

# 在 yml 文件末尾加上
http.cors.enabled: true
http.cors.allow-origin: "*"
# 为了安全生产环境应该关闭外网访问
vim elasticsearch.yml 
# 修改 network.host 为
network.host: 127.0.0.1
# 另外还可以修改默认的集群名称

重启 docker elasticsearch。

docker restart es

修改默认的 Elasticsearch 集群名称
Elasticsearch 默认的集群名称是elasticsearch,在生产环境上一定要修改成其他的名称,并且不同的环境和不同的集群要保证不相同,监控集群节点情况,如果有未知节点加入,一定要及时预警。

3.安装 Elasticsearch 常用可视化管理工具

3.1 Elasticsearch-head

elasticsearch-head 相当于是一个桌面,通过elasticsearch-head工具可以来操作elasticsearch。

1.镜像拉取

docker pull mobz/elasticsearch-head:5

2.启动

docker run -d --name="es-admin" -p 9100:9100 mobz/elasticsearch-head:5

可通过 http://xxx:9100/ 来访问。

3.2 ElasticHD

ElasticHD 支持 ES监控、实时搜索,Index template快捷替换修改,索引列表信息查看, SQL converts to DSL工具等,体验下来感觉还是比较强大的!

1.项目地址
https://github.com/360EntSecGroup-Skylar/ElasticHD

2.直接安装方式

# 首先下载zip压缩包
wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
# 解压
# 修改权限
chmod -R 777 ElasticHD
# 运行
./ElasticHD -p 127.0.0.1:9800 

3.Docker安装方式:

# 镜像拉取
docker pull containerize/elastichd
# 启动
docker run -p 9800:9800 -d --name="es-hd" --link es:demo containerize/elastichd

4.启动访问:http://localhost:9800

4.安装 IK 分词器

elasticsearch分词器,对中文分词并不是太友好。可以下载开源的IK分词器,来解决这一问题。

# 先进入 elasticsearch 容器 -> plugins 目录下
docker exec -it es /bin/bash
cd plugins/
mkdir ik
cd ik/
# 下载资源
## elasticsearch 5.0 后的版本都不支持插件在线安装的方式
## 具体可以参考 https://github.com/medcl/elasticsearch-analysis-ik/issues/344
## 可以通过下载资源方式安装
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
## 这里需要注意的是ik 分词器的版本。需要与elasticsearch版本相对应,否者后面会启动失败(具体可以参考其github首页)。
# 解压
unzip elasticsearch-analysis-ik-6.6.2.zip
rm -rf elasticsearch-analysis-ik-6.6.2.zip

重启 docker elasticsearch。

docker restart es

具体使用方式可以参考ElasticSearch6.5 使用ik+拼音分词

X.Docker Compose (暂时不使用,略复杂)

## 2.3 运行-生产模式

1.先检查 ``vm.max_map_count`` 配置

# The vm.max_map_count kernel setting needs to be set to at least 262144 for production use. Depending on your platform:
# 如果过小,需要修改(以下命令可以查看)
grep vm.max_map_count /etc/sysctl.conf
# 可通过以下命令,使实时生效
sysctl -w vm.max_map_count=262144
2.推荐安装 Docker Compose
。。。。。。

配置 Docker elasticsearch

6.安装kibana

docker pull docker.elastic.co/kibana/kibana:6.6.2
docker run -d --name kibana --network=container:es -e ELASTICSEARCH_URL=http://127.0.0.1:9200 kibana:6.6.2
# 使用 --network 就不能使用 -p 了

访问http://localhost:5601

7.Docker 容器开机自启动

可以在使用docker run启动容器时,使用--restart参数来设置,具体参数值详细信息:

  • no - 容器退出时,不重启容器;
  • on-failure - 只有在非0状态退出时才从新启动容器;
  • always - 无论退出状态是如何,都重启容器;

如果创建时未指定--restart=always,可通过update命令设置。

docker update --restart=always xxx

还可以在使用on-failure策略时,指定 Docker 将尝试重新启动容器的最大次数(默认情况下,Docker将尝试永远重新启动容器)。

docker run --restart=on-failure:10 xxx

8.自己的SpringBoot项目也可以使用docker运行

。。。

9.可以考虑利用gitee钩子处理自己项目的升级、部署之类

。。。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区