ElasticSearch 概述
ElasticSearch ,简称es ,es 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储,检索数据。;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es 也使用JAVA 开发并使用Lucene 作为核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESTful API 来隐藏Lucene 的复杂性,从而让全文搜索变得简单。
ElasticSearch 和Solr 比较
1,当单纯得对已有数据进行搜索时,Solr 更快
2,当实时建立索引时,Solr 会产生io 阻塞,查询性能差,ElasticSearch具有明显得优势
3,随着数据量得增加,Solr 得搜索效率会变得更低,而ElasticSearch 却没有明显得变化
4,es 基本开箱即用,非常简单,Solr 安装略微复杂一丢丢
5,Slor 利用Zookeeper 进行分布式管理,而ElasticSearch 自身带有分布式协调管理功能
6,Sorl 支持更多格式得数据,比如JSON ,XML ,CVS 而ElasticSearch 仅支持json 文件格式
7,Solr 官方提供得功能更多,而ElasticSearch 本身更注重核心功能,高级功能多有第三方插件提供,例如图形界面需要kibana 友好支持
8,Solr 查询快,但更新索引时慢(插入删除比较慢)用于电商等查询多得应用
ES 建立索引块(查询慢)即实时性查询块,用于facebook 新浪等搜索
Solr 是传统搜索应用的有力解决方案,但是ElasticSearch 更使用与新兴的操作。
9,Solr比较成熟,有一个更大,更成熟的用户,开发和贡献者社区,而ElasticSearch 相对开发维护者较少,更新太快,学习成本高。
安装ElasticSearch 和 head
1,再官网下载
下载自己的版本,我下载的是windows
下载完后
目录结构
bin :启动文件
config 配置文件
log4j2 :日志文件
jvm.options java 虚拟机相关的配置
elasticsearch.yml elasticsearch 的配置文件
lib 相关jar 包
logs 日志
modules 功能模块
plugins 插件 ik
在bin 里点击启动即可
访问
安装head 插件
在 github 下载
https://github.com/mobz/elasticsearch-head/
简单的前端页面
连接不上解决一下跨域的问题
在ElasticSearch.yml 加上这两句话
可以做一下简单的 操作
**了解ELK **
ELK 就是ElasticSearch,logstash,Kibana 三大开源框架首字母大写简称。
ElasticSearch 是一个基于Lucene ,分布式 ,通过Restful 方式进行交互得近实时搜索平台框架。logstash 是Elk 得中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集得不同格式数据经过过滤后支持输出到不同目的地,kibana 可以将ElasticSearch得数据通过友好得页面展示出来,提供实时分析得功能。
**安装Kibana **
下载
解压完直接点击bat 即可
我的是中文是因为我在
这里设置了中文编码
es 的核心概念
了解集群,节点,索引,类型,文档,映射是什么?
ElasticSearch (集群)中可以包含多个索引,每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行)
每个文档中又包含多个字段(列)
物理设计
ElasticSearch 在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移。
逻辑设计
一个索引类型中包含多个文档。我们可以通过 这种顺序 找到 索引 》类型 》文档id id不必要为一个整数,实际可以是一个字符串
文档
ElasticSearch 是面向文档的,意味着索引和搜索的最小单位是文档,ElasticSearch中,文档有几个重要的属性:
1,自我包含,一篇文档同时包含字段和对应的值,也就是同时包含 key:value!
2,可以是层次型 一个文档中包含自文档,复杂的逻辑实体就是这么来的
3,灵活的结构,关系型数据库需要定义好我们的字段,而ElasticSearch不需要。ElasticSearch会自动映射这种关系
类型
类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。ElasticSearch虽然会自己映射类型。但是如果我们的年龄字段是 18 ElasticSearch 自己猜可能会以为是 整数。所以最安全的是我们也需要提前的映射好。这点跟关系型数据库殊途同归了有点。
索引
索引是映射类型的容器,ElasticSearch 中的索引是一个非常大的文档集合,索引存储了映射类型的字段和其它设置,然后被分配到各个节点上。
分析节点是如何工作的?
一个集群至少有一个节点,而一个节点就是一个ElasticSearch进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有5个分片构成,每个主分片会有一个副本
上图是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不会丢失,实际上,一个分片是一个Lucene 索引,一个包含倒排序索引的文件目录,到排序的结构使得ElasticSearch 在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。
案例
假设我们现在通过便签来搜索博客文章,那么到排序索引列表就是这样一个结构
如果要搜索含有python 标签的文章,那相对于查找所有原数据而言,查找到排序索引后的数据将会快的多,只需要查看标签这一栏 ,然后获取相关的文章id 即可。