Python:Python 对接 ES 搞个搜索引擎

搜索引擎

所谓搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境 (引自百度百科)

什么是 Elasticsearch

想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。(来自大才博客

为什么要用 Elasticsearch

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。

那 Lucene 又是什么?Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库,但也仅仅只是一个库。要用上 Lucene,我们需要编写 Java 并引用 Lucene 包才可以,而且我们需要对信息检索有一定程度的理解才能明白 Lucene 是怎么工作的,反正用起来没那么简单。

那么为了解决这个问题,Elasticsearch 就诞生了。Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目标是使全文检索变得简单,相当于 Lucene 的一层封装,它提供了一套简单一致的 RESTful API 来帮助我们实现存储和检索。

所以 Elasticsearch 仅仅就是一个简易版的 Lucene 封装吗?那就大错特错了,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

一个分布式的实时文档存储,每个字段可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
总之,是一个相当牛逼的搜索引擎,维基百科、Stack Overflow、GitHub 都纷纷采用它来做搜索(大才博客

安装依赖

CentOS 安装 Java

下载JDK 下载地址 https://www.oracle.com/technetwork/java/javase/downloads
需要勾选 Accept License Agreement 才能进行下载

cd 到对应目录解压文件 并配置环境变量

vi /etc/profile 添加以下内容

export JAVA_HOME=/usr/local/java/jdk对应版本(建议1.8)   # 自己定义的目录
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin
export PATH=$PATH:$JAVA_PATH

source /etc/profile # 生效

键入 java -version
如果提示权限不足,请更改权限 chmod +x /usr/local/java/jdk对应版本/bin/java (+x 权限就行 777 太疯狂)

显示类似 openjdk version "1.8.0_171" 的版本输出说明安装成功

CentOS 安装 ES

请参考:https://blog.csdn.net/qiuang0170/article/details/89949799
该文章从安装到配置启动介绍的额比较详细

这样必要的环境安装就完成了,下面就要上高速了 ….

ES概念 以及 一些基础的操作

参考 Elasticsearch 基本介绍及其与 Python 的对接实现
注意大才的教程使用的是 ES6.x 版本,(ES6.x 和 最新的 ES7.x 还是有一些不同的,自行选择吧 )

Flask 构建 基于 ES 的搜索引擎

源码地址 https://github.com/yiwanggecaonima/FlaskES


FLASK ES

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!