각각의 index에 각각의 type을 저장:
- 인덱스 내에서 검색이 효과적이고 빠르다. 데이터량은 각 샤드 내에서 작아야 한다.
- 2개 이상의 인덱스의 데이터를 조합해서 검색하는 것은 오버헤드가 있다.
- 왜냐하면 쿼리는 각 인덱스들의 샤드들로 보내지고, 다시 결과를 합쳐서 유저에게 보내야 하기 때문이다.
- 만약 데이터셋이 작다면 비추다.
- 왜냐하면 미미한 성능향상을 위해 추가적인 샤드, 더 많은 스토리지가 필요하게 된다.
- 만약 데이터셋이 크고 쿼리가 오래 걸린다면 추천한다.
- 왜나하면 독점적인 샤드는 specific 데이터들을 저장하고, 그것은 ES가 처리하기 쉽게 만들기 때문이다.
1개의 index에 여러 type으로 저장:
- 1개의 인덱스 안에 있는 5개의 샤드(디폴트)에 더 많은 데이터가 저장된다.
- 이것은 다른 type 을 조합하는 쿼리를 날릴때 오버헤드가 적다는 것을 의미한다.
- 하지만 샤드 크기가 상당히 커질 거다.
- 샤드가 커진다는 것은 ES가 검색하는 데 더 오래걸린 다는 의미다. 왜냐하면 필터를 해야하는 문서가 더 많이 있기 때문이다.
- 만약 1TB 데이터로 성장할거라면 비추다.
- 다른 인덱스 또는 여러 샤드에 데이터를 분산하지 않을거면 비추다.
- 데이터가 작다면 추천. 왜냐하면 미미한 성능향상을 위해 스토리지를 낭비하지 않을거니까.
http://stackoverflow.com/questions/14465668/elastic-search-multiple-indexes-vs-one-index-and-types-for-different-data-sets