Es 总结
什么是分片?
- a1 索引下 创建了5个主分片, 每一个主分片对应一个复制分片
es 如何处理分页?
- from / size
elsaticsearch 和 lucene 的区别
- lucene : 是搜索引擎库
- es 封装了lucene , 把所有的复杂操作,通过restful 规范 ,以接口的形式抛出
为什么使用es
- 查询速度快
如何使用python查询elasticsearch中有多少个索引?
from elasticsearch import Elasticsearch
es = Elasticsearch()
print(es.cat.indices())
print(es.cat.indices(format='json'))
print(len(es.cat.indices(format='json')))
如何使用 python 将10G的数据 写入到es中
- 批量写入 helper.bulk(es,actions)
'''
# 批量插入
# 1. 通过 helper.bulk来批量创建数据
# 2. 将所有的数据定义成字典形式,包含:
# 2.1 _index 对应的索引名称 , 该索引必须存在
# 2.2 _type 对应类型名称
# 2.3 _source 对应的字典内,每一篇文档的字段和值
:return:
'''
action = [
{
"_index":"t2",
"_type":"doc",
"_source":{
"title":i
}
}
for i in range(1000)]
helpers.bulk(es,action)
说一下复制分片的作用
*** - 高可用, 相当于每一台机器上都存了一份备份数据
- 排除一个集群只有一个节点
- 当集群中有多少个节点的时候,es会自动的将主复分片分开
es优化
- 适当的调大系统打开文件的最大数, 默认是 1024
- 修改配置文件,调整es的jvm的内存大小,一般不超过32G. java中存在 `指针压缩` 的技术, jvm的内存越大,指针越大,导致消耗的资源也大
- 分片的数量最好设置在 5-20 个内.
- es的一个分片最多存20G数据 , 分片的数量在创建索引库时就指定好,创建好索引库后不允许修改分片的数量
- 分片设置过多会导致检索的比较慢 , 也会导致检索时打开比较多的文件, 导致服务器之间通信慢.
- 分片数过少会导致`单个分片的索引过大`,也会导致检索数据比较慢. 副本数多可以提升搜索的能力,如果设置的副本数过多,也是对服务器造成额外的压力.因为 分片需要同步. 所以设置2-3个即可
使用路由的优势?
1. 提高检索效率
2. 同类型的数据放在一起
3. 一个索引可以设置多个路由,由多个路由去处理检索或者是新增
如何解决路由导致集群数据偏移问题
- 一个索引上 有A,B,C三个路由. 所有数据都往A上存,B,C路由不存数据的现象
- 限制路由的数量,
setting配置: "index.routing_partition_size":3
脑裂
- 只出现在集群中
- 集群由于网络或者其他因素,导致集群一分为二,或更多. 通过 选举算法,分裂的集群可能会产生多个主节点
- 选举算法限制: 分裂出的机器数量小于 总集群数量的一半+1,不能选举主节点
如何在django中使用es
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?