elasticSearch_day01
1. Redis集群
1.1 什么叫集群
多台服务器集中在一起,实现同一业务
1.2 为什么集群
一台服务器不够,需要多台服务器支持,解决高并发,集群往往伴随分布式
2. 分布式
2.1 什么是分布式
分布式: 把整体业务拆分开,分别放到不同的服务
2.2 为什么要分布式
分布式和集群一起使用
便于维护
解决高并发 ,单点故障问题
便于扩容
3. Redis集群
3.1 为什么需要集群
(1)解决单点故障
(2)处理高并发
(3)处理大数据(高并发) --解决存储问题
3.2 集群方案的选择
(1)主从复制 (读写分离 主从同步)
优点:
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
缺点:
Redis不具备自动容错和恢复功能,如果想具备自动重起 ,需要安装插件
(2)哨兵模式
自动化的系统监控和故障恢复功能
优点:
主从复制优点都在, 通过哨兵自动恢复
缺点:
比较难扩容,服务占用空间比较多
(3)Redis-Cluster集群
redis的分布式存储,也就是说每台redis节点上存储不同的内容
优点:
上面有都有,解决分布式存储问题 ,容错问题
4. elasticSearch是什么
4.1ES的概念和特点
ES是什么?
es (elasticSearch): 全文检索的框架,专门做搜索,支持分布式,集群
es:全文检索的框架 --封装lucene的,支持分布式(集群) --特点
(1)原生Lucene使用的不足,优化Lucene的调用方式
(2)高可用的分布式集群 ,处理PB级别数据
1024KB -- 1MB
1024MB -- 1GB
1024GB -- 1TB
1024TB - 1PB
(3)它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。达到开箱即用的效果
lucene:全文检索 -- api的比较麻烦 操作全文检索的最底层技术
核心: 创建索引 搜索索引
4.2 ES的对手
Solr和ES区别:
(1)Solr重量级, 支持很多种类型操作,支持分布式式,它里面有很多功能,但是在实时领域上面,没有es好
(2)Es 轻量级, 支持json的操作格式, 在实时搜索领域里面做的不错,]如果想使用其他的功能,需要额外安装插件
5. ES的使用
ES 分为服务端 和 客户端
(1)ES服务端
解压 -->bin/elasticsearch.bat -->localhost:9200
a)配置内存:
config/jvm.options
-Xmx1g
-Xms1g
b)健康状态:
green(最健康) -->主分片和从分片(存储内容)都完好,集群是100%健康
yellow -->主分片好的,从分片至少缺少一个,集群还是可以使用,
red -->至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据
(2)ES客户端--navicat
restfull风格 ---> GET/POST/DELETE/PUT shop/goods/1
GET shop/goods/1 -->查询shop这个库goods表 1这条数据
PUT shop/goods {"name":"111"}
POST shop/goods {"name":"111"}
DELETE shop/goods/1
1)postman +head
2)curl-->在firefox安装poster插件
3)Kibana5 -->es
6. 文档的crud
6.1 基本的crud操作
# 新增
PUT crm/employee/1
{
"name":"xiaorong",
"age":18
}
# 修改 --整个文档
POST crm/employee/1
{
"name":"xiaohuahua"
}
# 修改局部文档
POST crm/employee/1/_update
{
"doc":{"name":"xiaohuahua"}
}
# 查询
GET crm/employee/1
# 删除
DELETE crm/employee/1
6.2 特殊的用法
# 展示没有什么效果(了解)
GET crm/employee/AW-tOSHILqo6XVH8f6cg?pretty
# 展示部分的字段
GET crm/employee/AW-tOSHILqo6XVH8f6cg?_source=age,name
# 返回元数据
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
# 修改数据 (脚本修改 --了解)
POST crm/employee/AW-tOSHILqo6XVH8f6cg/_update
{
"script" : "ctx._source.age += 5"
}
# 批量新增 --了解
POST _bulk
{ "delete": { "_index": "itsource", "_type": "employee", "_id": "123" }}
{ "create": { "_index": "itsource", "_type": "blog", "_id": "123" }}
{ "title": "我发布的博客111" }
{ "index": { "_index": "itsource", "_type": "blog" }}
{ "title": "我的第二博客2222" }
GET itsource/blog/_search
6.3 文档的查询
1. 通过id查询
GET crm/employee/AW-tOSHILqo6XVH8f6cg(id)/_source
1. 批量查询
# 不同库 不同表数据 (了解)
GET _mget
{
"docs" : [
{
"_index" : "itsource",
"_type" : "blog",
"_id" : "123"
},
{
"_index" : "crm",
"_type" : "employee",
"_id" : "AW-tOSHILqo6XVH8f6cg",
"_source": ["name","age"]
}
]
}
# 同一个库 同一个表数据
GET itsource/blog/_mget
{
"ids":["123","AW-tQP_4Lqo6XVH8f6ci"]
}
2. 其他查询
# 分页查询
GET crm/employee/_search?size=3&from=6
# 带条件查询
GET crm/employee/_search?q=age:38
GET crm/employee/_search?q=age[18 TO 48]