分布式全文搜索解决方案
1.解决方案介绍
ElasticSearch是一个基于RESTful web接口的分布式全文搜索引擎。
本解决方案是基于Mysql数据库 、 Hadoop生态(可选)、 ElasticSearch搜索引擎三大数据系统实现一个分布式全文搜索系统。
主要包括数据接入、数据索引和全文搜索3个模块。适用于各种项目的各种搜索场景。
1.1 三大数据系统
1.1.1 关系型数据库
用于对商品,用户等各种数据进行结构化存储。 关系型数据库对于事务性非常高的OLTP1操作(比如订单,结算等)支持良好。
[1] On-Line Transaction Processing联机事务处理,也称为面向交易的处理
主选:mysql数据库
1.1.2 hadoop生态
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供存储,而MapReduce则为海量的数据提供计算。
hadoop是数据仓库主要的载体,除了备份关系型数据库的所有版本,还存储用户行为,点击,曝光,互动等海量日志数据,hadoop对于数据分析,数据挖掘等OLAP2操作支持比关系型数据库更加具有扩展性和稳定性。
[2] On-Line Analytical Processing联机分析处理
Hive,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。
HBase,Hadoop的一个子项目,是一个分布式的、面向列的开源数据库。
Spark,专为大规模数据处理而设计的快速通用的计算引擎,可以在 Hadoop 文件系统中并行运行,作为对 Hadoop 的补充。
1.1.3 搜索引擎
以elasticsearch和solr为代表。搜索引擎是获取信息最高效的途径,几乎成为各类网站,应用的基础标配设施(地位仅次于数据库)。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
1.2 基于ES的分布式搜索技术架构
2.软件安装
2.1 安装JDK
ElasticSearch是用JAVA语言开发的,其运行需要安装JDK。
JDK (Java Development Kit) ,是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。
2.1.1 下载安装JDK
安装:双击 软件 打开安装界面
点击下一步 进入选择安装目录界面
点击更改 自定义安装目录
点击 下一步 进行安装
等待,出现以下界面,则安装完成,点击关闭即可。
2.1.2 配置环境变量
配置 JAVA_HOME环境变量
配置Path环境变量
2.1.3 测试-查看JDK版本
打开命令行窗口,输入java -version
查看JDK版本
出现以上界面,说明安装成功。
2.2 安装Elasticsearch
权威指南Elasticsearch: 权威指南 | Elastic
2.2.1 下载安装
下载地址Download Elastic Products | Elastic
解压
2.2.2 配置Path环境变量
(bin目录)
2.2.3 启动elasticsearch
打开命令行窗口 执行命令 elasticsearch -d 启动elasticsearch
注:该命令行窗口 不要关闭。
浏览器打开 http://localhost:9200
出现以上界面,则启动成功。
2.2.4 目录解读
-
bin:启动文件
-
config:配置文件
-
log4j2.properties:日志配置文件
-
jvm.options:java虚拟机的配置
-
elasticsearch.yml:es的配置文件
-
-
data:索引数据目录
-
lib:相关类库Jar包
-
logs:日志目录
-
modules:功能模块
-
plugins:插件
2.2.5(选装)安装Elasticsearch-Head
elasticsearch-head是一个用于浏览ElasticSearch集群并与其进行交互的Web项目
GitHub托管地址:GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster
下载并解压:
安装:打开命令行,切换到Elasticsearch-Head目录,执行以下命令
npm install
启动:打开命令行,切换到Elasticsearch-Head目录,执行以下命令
npm run start
启动成功后,可通过http://localhost:9100进行访问
由于跨域(Elasticsearch位于9200端口),需要添加配置: E:\elasticsearch-7.1.0\config\elasticsearch.yml中
#新添加的配置行 http.cors.enabled: true http.cors.allow-origin: "*"
重新启动
访问效果: