如何在“内存”中独占使用ElasticSearch索引?

cygmwpex  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(2)|浏览(459)

我有一个类,用于存储文档并使用elasticsearch客户端对其进行索引。我希望索引只在内存中,除非显式保存到磁盘。明确地:
可以创建索引并搜索它
如果未保存,则在会话结束时从磁盘中擦除
如果已保存,则保存到磁盘
然而,elasticsearch实际上是一种磁盘服务(将索引直接写入磁盘,在请求时删除)。
有没有办法从elasticsearch中获得所需的行为?

zbq4xfa0

zbq4xfa01#

这个特性在很久以前就被删除了(在es1.7中)。有可能利用 memory 一个存储到另一个存储在内存中,而不是文件中。
这在es2.0中被弃用并删除了,原因很明显,也就是说,它没有提供任何弹性以防节点中断。
类似的功能是在启动时将所有内容预加载到内存中,尽管这并不能完全满足您的要求。请随意详述你为什么需要这种行为。

kmbjn2e3

kmbjn2e32#

elasticsearch文档保存在磁盘中是正确的,但是数据缓存在ram中,以便我们的/get查询在搜索时得到更快的响应,只要您有足够的内存。
您可以使用下面的查询显式地将索引存储类型标记为cached,通过将文件Map到内存,将shard索引存储在文件系统上(Map到lucene mmapdirectory)

curl -XPUT /indexname { "settings": { "index.store.type": "mmapfs" } }

mmapfs公司

The MMap FS type stores the shard index on the file system (maps to Lucene MMapDirectory) by mapping a file into memory (mmap). Memory mapping uses up a portion of the virtual memory address space in your process equal to the size of the file being mapped. Before using this class, be sure you have allowed plenty of virtual address space.

请在此处阅读有关索引存储类型的详细信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-store.html
此外,如果您正在处理elasticsearch上的大量数据,并且最近几天的索引查询更频繁,您可以尝试elasticsearch热节点体系结构,对于热节点,您可以将索引存储设置应用于 mmapfs 可能仅针对热节点
更多info:https://www.elastic.co/blog/hot-warm-architecture-in-elasticsearch-5-x

相关问题