Elasticsearch介绍
# 1 产生背景:大规模数据如何检索,数据安全(单点故障),备份,检索速度
# 2 Elasticsearch介绍
-是一个基于Lucene的分布式搜索和分析引擎,全文检索引擎
-Elasticsearch使用Java开发
-但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,使得全文检索变得简单
# 3 Lucene与Elasticsearch关系
-Lucene只是java一个库----》只能java来使用
-python中集合--》只能python来用--》java,go用不了,其它语言想用,怎么做?
-做成服务---》django搭建一个服务---》对外通过restful接口 ---> get /key post /key=value
-基于Lucene封装 ,做成服务,通过restful来调用,使用全文检索
# 4 Elasticsearch vs solr
-solr 也是一个全文检索引擎
-跟es关系就像是mysql和oracle的关系
-传统搜索用solr多,es新兴互联网用的多
# 5 es核心概念
-集群:多台服务器的集合,称为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
-日志的收集和分析系统
# 8 Elasticsearch特点和优势
# 9 为什么使用es?
-我们项目如果有搜索功能,都可以用
-日志存储分析
-大数据量的存储和检索
# 10 Elasticsearch索引到底能处理多大数据
-es一个索引(数据库)可以有多个分片,一个分片是一个lucene的索引
-lucene一个索引不能处理多于21亿篇文档,或者多于2740亿的唯一词条
-理论上是可以无限加的
Elasticsearch安装配置
# 1 基于java开发的,安装jdk,windows上安装(jdk 1.8 以上),一路下一步(jdk,jre),(不需要配置环境变量了)
-java -version
# 2 安装es(去官网下载相应的版本,es+kiban. 注意版本一定要对应)
-版本问题:2 5版本 6版本 7版本 7.6.2版本最新(讲课用7版本),公司可能会用6或者6之前的版本
-haystack:不支持es,6以上版本,django上做全文检索的框架(对接es,对接solr,对接whoosh)
-whoosh-纯Python的全文搜索库,Whoosh是索引文本及搜索文本的类和函数库。它能让你开发出一个个性化的经典搜索引擎
-6以后,不允许一个索引下建多个type(类型)---》一个数据库只能有一个表
# 3 解压到指定目录(随便,不要有空格,中文 c://soft )
# 4 启动es
-到es的bin路径下,elasticsearch.bat
-Kibana 就是es的客户端(官方提供,相当于Navicat)
-Elasticsearch-head 就是es的客户端(第三方的,相当于Navicat)
# 5 启动kibana
-修改kibana.yml配置文件
i18n.locale: "zh-CN"
server.port: 5601
server.host: "127.0.0.1"
server.name: lqz
elasticsearch.hosts: ["http://localhost:9200/"]
-配置跨域(改es的配置)
-elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
-到kibana的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客户端,主要用来做增删查改,有提示(postman,Elasticsearch-head)
# Elasticsearch-head :看集群的状态,索引的状态