解密Elasticsearch:深入探究这款搜索和分析引擎

💡 原文中文,约5500字,阅读约需13分钟。
📝

内容提要

最近使用Elasticsearch实现画像系统,调研了竞品架构选型,重温了redis原理。Elasticsearch的通讯使用netty,内存分为on heap和off heap,不能回收的部分有node query cache、shard request cache、file data cache、segments cache。持久化分为快照和translog日志。应用方面,使用es解决人群预估、人群包圈选和人包判定问题。优化方面,需要优化mapping,使用线程池和适当的拒绝策略,调整refresh policy等。瓶颈方面,可以使用redis或MongoDB存储人包数据。总结来说,Elasticsearch在实时检索方面表现出色,但实时写会降低检索性能。

Q&A

Elasticsearch的主要应用场景是什么?

Elasticsearch主要用于人群预估、人群包圈选和人包判定等应用场景。

Elasticsearch如何处理内存管理?

Elasticsearch的内存分为on heap和off heap,on heap由JVM管理,off heap由Lucene管理,且有部分内存不能被回收。

Elasticsearch的持久化机制是怎样的?

Elasticsearch的持久化分为快照和translog日志,类似于Redis的RDB+AOF模式。

使用Elasticsearch时如何优化查询性能?

优化查询性能的方法包括优化mapping、使用线程池、调整refresh policy等。

Elasticsearch在实时写入时会遇到什么问题?

实时写入会降低检索性能,尤其是在写操作和查操作并行时,内存和磁盘IO会非常高。

Elasticsearch与Redis或MongoDB的比较如何?

在存储人包数据时,可以使用Redis或MongoDB作为替代方案,尤其在数据频繁变化时。

🏷️

标签

➡️

继续阅读