基于elasticsearch构建百度搜索引擎——高校校园综合新闻搜索网站(一)

基于elasticsearch构建百度搜索引擎——高校校园综合新闻搜索网站(一)

总述

本项目目标是实现一个与百度相似功能的软件,分别实现百度所支持的以文搜文、以文搜图、以图搜文、以图搜图功能,打造一个高校校园综合新闻搜索网站。实现过程主题思路是通过分布式爬虫获取高校校园内的新闻资源信息,然后同步数据到elasticsearch中。最后,通过django构建网站实现高校校园综合新闻搜索网站。写此博客以对之前开发过程总结,并分享自己开发的思路。由于个人能力有限,项目可能存在本人未曾发现的问题。
总体流程图

环境配置

Ubuntu系统

本项目采用VMware虚拟机搭建Ubuntu19.04版本服务器(如果老版本更新源不维护,需要修改/etc/apt/source.list文件中网址为 http://old-releases.ubuntu.com/ubuntu/。有条件的话,也可以在真正服务器上搭建,构建逻辑都是一样的)。同时安装openssh-server开启SSH服务,供我们通过xshell访问服务器。

elasticsearch

elasticsearch我们采用的版本是6.8.0,elasticsearch通过java开发,所以配置前我们需要先在服务器上安装jdk。这里我们采用java1.8,配置与window下环境变量类似,只不过是通过.bashrc文件进行设置。
java环境配置
java环境配置完成后,我们修改一下elasticsearch配置文件elasticsearch.yml:
在这里插入图片描述
主要是地址和端口设置,如果想要外部访问可以修改host为0.0.0.0,但是可能会导致以下问题在这里插入图片描述
网上都有解决方法。但是为了安全性考虑,我们还是使用默认环回地址。
最后,我们在.bashrc文件中设置一下elasticsearch启动命令,启动后查看es是否能正常访问。
在这里插入图片描述
正常运行情况如下:
在这里插入图片描述

elasticsearch-head

安装elasticsearch-head前,我们需要安装node.js。下载node.js后,我们配置一下.bashrc文件,与jdk配置逻辑思路一样。
在这里插入图片描述
查看npm版本,检测是否安装成果。
在这里插入图片描述
然后,进入到elasticsearch-head目录下,通过npm install命令,下载相关依赖扩展。
最后,在Gruntfile.js 文件中我们可以修改访问head的host以及端口。在_site/app.js文件中,我们要保证端口和host与elasticsearch一致。
在这里插入图片描述
在这里插入图片描述
我们还需要在elasticsearch.yml配置文件中设置一下跨域访问,不然elasticsearch-head访问不到elasticsearch,以及后面kibana和python对elasticsearch一些操作无法执行。
在这里插入图片描述

然后运行npm run start命令启动服务,可以看到集群状态是健康的。
在这里插入图片描述

ik分词器

下载相应包解压到elasticsearch中modules目录下中ik文件夹下即可。

kibana

与elasticsearch配置类似,设置一下kibana.yml配置文件,修改host允许我们外部访问服务器
在这里插入图片描述
在这里插入图片描述

同时定义一下kibana启动命令。
在这里插入图片描述
运行kibana命令,正常运行结果如下。
在这里插入图片描述

redis

redis我们使用的是版本是5.0.7。下载解压后进入主目录,执行make命令。然后运行src/redis-server启动redis,如下图:在这里插入图片描述

Anaconda

下载anaconda并配置相关环境,查看anaconda版本。
在这里插入图片描述

创建虚拟环境searchengine供我们后期开发使用。
在这里插入图片描述

小结

基本环境配置到此以及完成,接下来开始项目具体实现流程。其中有遇到一个未解决的问题就是:上面elasticsearch-head在服务器中内部浏览器可以正常访问,集群状态是正常的,而通过外部网络访问服务器时候,集群状态则是未连接。(感觉如果elasticsearch地址设置默认路由地址,外部网络应该可以访问。也有可能是访问的ip地址不一致导致的。不过,这些基本上不影响后续操作。)
在这里插入图片描述
[1]:https://www.jianshu.com/p/1d2ddb92f6fb


版权声明:本文为xty13145588950原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。