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. Elasticsearch安装配置

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),主要用来做看集群的状态,索引的状态

 

posted @ 2020-05-06 23:35  Mr沈  阅读(314)  评论(0编辑  收藏  举报