我在Elastic search中有2个索引,一个在默认存储类型上运行,另一个在内存存储类型上运行。我已向这两个索引中的每一个插入100,000个文档,默认存储索引比ram索引快1秒。这是为什么 ?

在搜索时,默认索引也很快。

我的ES服务器在SSD上运行。
有人可以解释一下为什么内存中的索引比SSD上的一个存储慢吗?

最佳答案

您必须在负载测试过程中监视JVM和系统内存的运行情况,才能真正了解运行情况。
memory索引选项可以与OS内存管理器一起使用。通过使JVM更加努力地释放空间,它还可以增加垃圾回收的暂停。
default选项(在64位Linux系统上为mmapfs)使操作系统可以更有效地管理缓存/交换内存页面。

1秒是针对小索引的查询增加了很多延迟。如果要冒昧地猜测一下,我想说您的memory索引不是100%驻留在物理内存中,因此操作系统必须在完成查询之前从virtual-> physical交换不必要的大页面。

本文将进行更详细的介绍(从Solr上下文开始,但是基本的Lucene实现是相同的):http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html

尝试增加系统上的内存,或针对较少数量的文档进行测试,以查看差异是否仍然存在。

10-01 18:55
查看更多