基于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环境配置完成后,我们修改一下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