Elasticsearch介绍与安装
Elasticsearch介绍与安装
1. Elasticsearch介绍
1. 产生背景
大规模数据如何检索,数据安全(单点故障),备份,检索速度
2. 介绍
Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,全文检索引擎,Elasticsearch是使用Java开发,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,使得全文检索变得简单
3. Lucene与Elasticsearch关系
Lucene只是java一个库 ----》只能java来使用
如果想要别的语言也要使用就基于Lucene封装 ,做成服务,通过restful来调用,使用全文检索 ---》Elasticsearch
4. Elasticsearch vs solr
solr 也是一个全文检索引擎
es关系就像是mysql和oracle的关系
传统搜索用solr多,es新兴互联网用的多
5. Elasticsearch核心概念
- 集群:多台服务器的集合,称为es的集群
- 节点:集群的每个服务器称为节点
- 分片:10g的数据(一个表中),对10g数据分片,分成2g,3g,5g,把这些数据,分别放在不同的节点上
- 副本:为提高查询吞吐量或实现高可用性,可以使用分片副本
- 全文检索:分词,全文检索---》可以根据关键字搜索
6. es跟关系型数据库mysql比较
mysql | es |
数据库 | 索引(index) |
表 | 类型(type) |
一条一条数据 | 文档(document) |
一列一列(字段) | 字段(field)(name,age) |
字段属性(主键,类型,索引) | 映射(mapping) |
索引 | 所有字段建索引(倒排索引) |
增删查改 | get、post、delete ... |
7. ELK是什么?
ELK=elasticsearch+Logstash+kibana
日志的收集和分析系统
elasticsearch:后台分布式存储以及全文检索
logstash: 日志加工、“搬运工”
kibana:数据可视化展示。
ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。
8. Elasticsearch特点和优势
1)分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。
2)实时分析的分布式搜索引擎。
分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作;
负载再平衡和路由在大多数情况下自动完成。
3)可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。也可以运行在单台PC上(已测试)
4)支持插件机制,分词插件、同步插件、Hadoop插件、可视化插件等。
9. 为什么使用es?
13年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索等等,可想es做搜索的强大
- 我们项目中只要有搜索功能的,都可以使用es
- 日志存储分析
-大数据量的存储和检索
10. Elasticsearch索引到底能处理多大数据
es一个索引(数据库)可以有多个分片,一个分片是一个lucene的索引
lucene一个索引不能处理多于21亿篇文档,或者多于2740亿的唯一词条
理论上是可以无限加的
2.
1. 安装jdk,jre
基于java开发的,安装jdk,windows上安装(jdk 1.8 以上),一路下一步(jdk,jre),(不需要配置环境变量了)
测试是否成功:java -version
2. 安装es与kibana(去官网下载相应的版本,es+kibana. 注意版本一定要对应)
版本问题:2 5版本 6版本 7版本 7.6.2版本最新,公司可能会用6或者6之前的版本
haystack:不支持es的6以上版本,django上做全文检索的框架(对接es,对接solr,对接whoosh)
whoosh-纯Python的全文搜索库,Whoosh是索引文本及搜索文本的类和函数库。它能让你开发出一个个性化的经典搜索引擎
6以后,不允许一个索引下建多个type(类型)---》一个数据库只能有一个表
在工作中碰到的问题和如何解决的?
-django+haystack+whoosh
-换成es,性能更高
-项目里加全文检索,django---》haystack---》es版本必须6以下
-django+es原生操作---》http请求实现了全文检索
1. 下载完后解压到指定目录
2. 安装kibana,解压到指定目录
3. 配置
修改kibana配置文件 config下的 kibana.yml
# kibana端口与ip,名字随便起,监听的es地址 server.port: 5601 server.host: "127.0.0.1" server.name: sy elasticsearch.hosts: ["http://localhost:9200/"]
修改es的配置文件 config下的 elasticsearch.yml
# 允许跨域,允许的域是* http.cors.enabled: true http.cors.allow-origin: "*"
4. 启动es
cd到es的bin路径下的 elasticsearch.bat即可启动
5. 启动kibana
cd到es的bin路径下的 kibana.bat 即可启动
6. 安装启动Elasticsearch-head(第三方用node 写的一个es客户端)
#node 环境要装好 #下载:https://github.com/mobz/elasticsearch-head #解压 #执行 npm install npm run start http://localhost:9100/
Kibana :就是es的客户端(官方提供,相当于Navicat)主要用来做增删查改,有提示
Elasticsearch-head :就是es的客户端(第三方的,相当于Navicat),主要用来做看集群的状态,索引的状态