首页 .Net .NET Core Web Api与elasticsearch打造全站全文搜索引擎【elasticsearch安装】

.NET Core Web Api与elasticsearch打造全站全文搜索引擎【elasticsearch安装】

默认已经有docker环境

下载与安装 elasticsearch ,从hub.docker里面可以看到最新版本的镜像,选择你想要的版本

本教程是以 7.17.7 为案例,为啥不适用最新的,首先个人一般需用最新的版本,如果有亢很难填,其次我自己的服务器下载的太慢(还是配置了docker加速地址的)拉取几个小时都下载不下来7.17.9版也一样,直接放弃~ 最终挑到了7.17.7

【官方传递】https://hub.docker.com/_/elasticsearch

一、安装、运行 elasticsearch

拉取镜像

docker pull elasticsearch:7.17.7

运行实例

docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.17.7

访问 ip+9200 出现该界面表示已经安装、运行成功!

如果没有成功,请看一下docker 运行的日志

docker logs [OPTIONS] CONTAINER

OPTIONS说明:

-f : 跟踪日志输出

–since : 显示某个开始时间的所有日志

-t : 显示时间戳

–tail : 仅列出最新N条容器日志


为防止重要的数据掉失,我们需要将es重要文件挂载到外部

1.找个存储文件的目录,我这里放置在/usr/docker

2. 执行复制容器文件命令

首先得知道运行的容器信息,执行 docker ps 查看正在运行的实例

可通过 docker exec -it 容器id /bin/bash 进入容器内容查看,通过 exit 退出容器内部

复制容器内容到 /usr/docker 目录

docker cp e3b71d0d624b:/usr/share/elasticsearch /usr/docker

复制完成就可以看到 es的一大推文件


3. 删除之前运行的实例,先停止再删除

docker stop xx

docker rm xxx

4. 重新运行实例,命令如下

docker run -d --name es -p 9200:9200 -p 9300:9300

-v /usr/docker/elasticsearch/data:/usr/share/elasticsearch/data

-v /usr/docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

-v /usr/docker/elasticsearch/logs:/user/share/elasticsearch/logs

-v /usr/docker/elasticsearch/backup:/usr/share/elasticsearch/backup

-e "discovery.type=single-node"

-e ES_JAVA_OPTS="-Xms64m -Xmx512m"

--restart=always

elasticsearch:7.17.7


参数部分解释,elasticsearch更多docker相关参数可在hub.docker里面找到

-v xxx:/xx 表示要挂载的目录或文件

-e ES_JAVA_OPTS="-Xms64m -Xmx512m" 表示最大内存512M,最小内存64M

--restart=always 随docker自动重启

注:这里限制内存 不然小服务器顶不住。

运行成功,可以看到cpu,内存差点爆表,不过不用担心稍会就会降下去。至于为啥会这样目前不太清楚,有大神可以留言,请教一下!感谢好心人!


二、安装elasticsearch可视化工具

这里选择了 elasticsearch head

#拉取镜像

docker pull mobz/elasticsearch-head:5

#运行实例

docker run -p 9100:9100 --name elasticsearch-head -d mobz/elasticsearch-head:5

运行成功如下

虽然运行成功了但可以看到是未连接的状态,就算输入了正确的ip地址还是不能连接,打开F12可以看到是跨域的问题

解决办法

修改docker中elasticsearch的elasticsearch.yml文件,在最后面加上

http.cors.enabled: true

http.cors.allow-origin: "*"

可像我这样找到已经挂载在外部的配置文件,打开修改也可以使用命令随你喜欢~(记得重启服务)

如果没有挂载在外部的可进行容器里面修改(强烈推荐挂载)

docker exec -it 容器id /bin/bash

vi config/elasticsearch.yml

xxxx

退出并重启服务

exit

docker restart 容器id



重启服务后输入正确的ip,可以看到这个界面表明可以了


最后需要解决elasticsearch-head 面板操作数据时不显示报406的问题,如图打开这些界面发现是空白的而且报错。




解决版本 修改_site/vendor.js 文件

6886行

contentType: "application/x-www-form-urlencoded",

改成 contentType: "application/json;charset=UTF-8",

7573行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&

改成 var inspectData = s.contentType === "application/json;charset=UTF-8" &&




你可以选择将文件挂载到外部去,也可以进行容器里面直接修改。

 先把elasticsearch-head的文件挂载到外部去,这里就不详细的贴出来了。

docker cp 0b5e6db9316a:/usr/src/app /usr/docker/eshead

我这里遇到一个小问题,在查看挂载信息发现文件确实时挂载成功了,但是打开vendor.js发现还是原来的内容这让我很困惑不知道是不是缓存的原因。随后我在url后面加上了版本号发现还是原来的内容 ~~

只能暴力解决了,后面在找个时间看看是什么回事 ~~

从外部复制文件到容器里面

docker cp /usr/docker/eshead/app/_site/vendor.js 容器id:/usr/src/app/_site

重启服务,好了,刷新界面看到这个界面就 ok


查看挂载信息

docker inspect 容器id


到此我们安装教程已经结束了,下篇将与wep api 对接完成我们的全站搜索功能


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。