2014-11-07 6 views
1

주어진 색인 집합과 그 안에 펼쳐지는 문서가 많은 Elasticsearch 데이터베이스에 직면 해 있다고 가정 해 봅시다. http://localhost:9200/_optimize으로 전화를 걸면 실행하는 데 시간이 오래 걸리며 그 결과로 필요한 작업임을 증명할 수 있습니다. 데이터베이스 크기가 ~ 20 % 감소한다는 사실을 분명히 알 수 있습니다.어느 Elasticsearch 지표에 최적화가 필요합니까?

이제 전체 데이터베이스가 아닌 인덱스별로 정기적으로 최적화하고 싶습니다. 우리에게있어서 이것은 우리가하는 일반적인 작업이 모든 지표를 한꺼번에 다루지는 못하기 때문에 흥미 롭습니다. 시간이 지남에 따라 모든 지표가 영향을받습니다. 어떤 인덱스에 최적화가 필요한지 어떻게 알 수 있습니까?

내가 찾은 유용한 정보는 http://localhost:9200/_stats/docs을 사용하여 삭제 된 문서의 색인을 찾는 것입니다.

다른 수표가 있습니까?

아마도이 문제는 언제, 왜 또는 어떻게 최적화해야하는지 또는 피하는 방법에 관한 것이 아닙니다.

답변

1

ES의 색인은 기본적으로 디스크에있는 파일입니다. 인덱스 작업이 수행 될 때마다 문서가 이러한 파일이나 새 세그먼트 파일에 추가됩니다 (새로 고침 기간에 따라 다름). 최적화 프로세스는 더 작은 Lucene 세그먼트를 더 큰 세그먼트로 병합합니다.

인덱스에서 삭제 작업이나 업데이트 작업 (업데이트 = 이전 버전의 문서를 삭제하고 새 버전의 문서를 다시 인덱싱)을 수행하면 문서는 실제로 삭제되지 않지만 삭제 대상으로 표시됩니다. 병합 작업이 시작될 때마다 실제로 삭제 된 문서로 삭제할 때입니다.

이 때문에 삭제 된 문서 수를 확인한 다음 병합하면 디스크 할당 공간이 향상됩니다. 일반적으로 최적화 작업은 필요하지 않으며 ES에 의해 자동으로 수행됩니다. 정말로하고 싶다면 IO 및 CPU 사이클을 소비한다는 점에 유의하십시오. 이것이 유용 할 수있는 한 시나리오는 장래에 변경되지 않는 인덱스 (예를 들어 과거의 로그)입니다. 이 시나리오를 다른 시나리오에서 수동으로 수행하는 것은 권장되지 않습니다.

"어느 색인에 최적화가 필요합니까?" - 아는 사람은 변경하지 않을 것입니다 (더 이상 쓸 수 없습니다). 이상적으로 하나의 색인은 하나의 세그먼트 만 갖는 것이 좋습니다 (하나의 세그먼트로 색인을 검색하는 것이 여러 세그먼트로 구성된 색인을 검색하는 것보다 효과적입니다).

또한 최적화에 대해서는 this reading을 제안합니다.

+0

세그먼트를 언급해 주셔서 감사합니다. URL을'http : // localhost : 9200/_stats/docs, segments'로 확장했습니다. – sjngm

관련 문제