elasticsearch - 介绍
需求
▧ 搜索方案要高效
▧ 希望零配置和完全免费的搜索方案
▧ 希望能够简单通过json 和 http 与搜索引擎交互
▧ 希望搜索服务器稳定
▧ 希望能够将一台服务器扩展到上百台
说明
ElasticSearch 是一个基于 Lucene 的搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
本质上是可以理解为一个 nosql 数据库, 定义类似于 mongodb 以及 redis
官网
对比关系数据库搜索
▧ 无法打分
▧ 无分布式
▧ 无法解析搜索请求
▧ 效率低
▧ 无分词处理
elasticsearch-rtf - 相关环境安装
java
安装
ElasticSearch 是一个基于 Lucene 的, 而切实基于 java 开发的, 因此需要安装 java
注意 ElasticSearch 5 以上的版本是需要 java 8 以上的版本才支持使用
安装地址 点击这里
测试
在 cmd 中使用 java , javac , java -version 等命令测试是否成功
elasticsearch-rtf
安装
elasticsearch-rtf 是国内的大神进行封装后的更适合使用的组件
源码 GitHub 点击这里
下载解压即可
启动
在解压目录进行命令启动 elasticsearch.bat
启动后会指明 127.0.0.1:9200 地址进行访问
访问会是 json 形式展示
head 插件
类似于 navicat 一样的可视化工具在浏览器中
本身是个前端的项目, 需要用到 npm
安装
GitHub 上面 下载源码然后解压
使用
解压好后且入目录执行依赖包下载以及项目运行
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
运行后会监听 127.0.0.1:9100
允许插件
默认安装好后默认 elasticsearch 是不允许第三方插件的需要进行一定的设置
对 D:elasticsearch-rtf-masterconfigelasticsearch.yml 尾部追加此代码允许第三方插件
http.core.enabled: true http.core.allow-origin: "*" http.core.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE http.cors.allow-headers: "S-Requested-With, Content-Type, Content-Length, X-User"
成功后就会这样
kibana 安装
安装
一样是同上面一样下载安装包, 进行解压
注意一点 版本要对应, 这里是 5.1.1, 因此选择对应版本的安装包
启动
安装好之后运行 kibana-5.1.1-windows-x86inkibana.bat ,
运行后的访问页面是 127.0.0.1:5601
然后访问会进入这个页面则表示成功了
elasticsearch - 概念
物理概念
▧ 集群
一个或者多个节点组织在一起
▧ 节点
一个节点是集群中的一个服务器, 由一个名字来标识, 默认是一个随机漫威英雄的名字
▧ 分片
将索引分为多份的能力, 允许水平分割和扩展容量,多个分片相应请求, 提高性能和吞吐量
▧ 副本
创建分片的一份或多分的能力. 在一个节点失败其他节点可以顶替
逻辑概念
elasticsearch | mysql |
index - 索引 | 数据库 |
type - 类型 | 表 |
documents - 文档 | 行 |
fields | 列 |
HTTP 方法
方法 | 描述 |
GET | 请求指定的页面信息,并返回实体主体 |
POST |
向指定的资源提交数据进行处理请求, 数据被包含 早请求体重, POST请求可能会导致新的资源建立 和/或已有资源的修改 |
PUT | 向服务器传送数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定页面 |
倒排索引
根据属性的值来查找记录
这种索引表的每一项都包括一个属性值和具有该属性值的各记录的地址
带有倒排索引的文件我们称之为倒排索引文件, 简称倒排文件
待解决问题
▧ 大小写转换问题
▧ 词干抽取
▧ 分词
▧ 压缩编码