simplefs는 랜덤 액세스 파일(Java RandomAccessFile-http://docs.oracle.com/javase/8/docs/api/java/io/RandomAccessFile.html)를 사용해 구현된 Directory 클래스 구현을 사용하며 루신의 SimpleFSDirectory (http://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/SimpleFSDirectory.html)과 매핑된다. 매우 간단한 애플리케이션에서는 simplefs만으로 충분한다. 그러나 simplefs 저장소의 주요 병목은 다중 스레드가 접근할 때이며 이 때 성능이 떨어진다.
index.store.type을 simplefs로 설정해야 한다.
2. niofs
niofs 저장소 타입은 java.nio 패키지의 FileChannel 클래스 (http://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html)를 기반으로하는 Directory 클래스 구현을 사용하며 루신의 NIOFSDirectory (https://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/NIOFSDirectory.html)과 매핑된다. niofs 저장소 구현은 성능 저하 없이 여러 스레드가 동일한 파일에 동시에 접근할 수 있게 한다. niofs 저장소를 사용하려면 index.store.type을 niofs로 설정해야한다.
3. mmapfs
mmapfs 저장소 타입은 루신의 MMapDirectory (http://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/MMapDirectory.html) 구현을 사용한다. mmapfs는 읽을 때는 mmap 시스템 호출 (http://en.wikipedia.org/wiki/Mmap)을 사용하고 저장할 때는 랜덤 액세스 파일을 사용한다. mmapfs 저장소는 매핑된 파일의 크기와 동일한 프로세스에서 사용 가능한 가상 메모리 주소 공간의 일부를 사용한다. 잠금 기능이 없으므로 다중 스레드가 접근할 때 확장이 가능하다. 운영 체제의 인덱스 파일을 읽기 위해 mmap을 사용할 때는 이미 캐시된 것처럼 보인다(가상 공간에 매핑되었다). 이 때문에 루신 인덱스에서 파일을 읽을 때 해당 파일을 운영 체제 캐시에 로드할 필요가 없으므로 접근이 더 빠르다. 기본적으로 루신과 일래스틱서치가 I/O 캐시에 직접 접근할 수 있어서 인덱스 파일에 빠르게 접근할 수 있다.
mmap 파일 시스템 저장소는 64비트 환경에서 가장 잘 작동하고 32비트 환경에서는 인덱스가 충분히 작고 가상 주소 공간이 충분하다고 확신할 때만 사용해야 한다. mmapfs 저장소를 사용하려면 index.store.type을 mmapfs로 설정해야 한다.
fs 저장소는 기본 파일 시스템 구현이다. fs 저장소가 기본으로 설정되면 일래스틱서치는 운영 체제 환경에 따라 최적의 구현을 선택할 수 있다. 윈도우 32비트에서는 simplefs, 다른 32비트에서는 niofs, 64비트 시스템에서는 mmapfs으로 선택된다.
5. default_fs
일래스틱서치 1.x버전에는 Hybrid(2.x버전에서는 default_fs라고 한다)와 Memory라는 두 가지 다른 저장소 타입이 사용되었다. 일래스틱서치 2.x부터는 Memory 저장소 타입이 제거되었다. 일래스틱서치 5.0 버전부터는 default_fs 저장소 타입이 더 이상 사용되지 않을 것이고 표시하고 있다. 이제 default_fs는 이전 버전과의 호환성을 위해 내부적으로 fs 타입을 지정하도록 되어 있고 조만간에 제거될 것이다.