일종의 flush 같은개념인데. 길면 길수록 성능은좋아지고, 짧은 수록 성능은 떨어진다.
테스트결과 짧게 주는것보다 길게 주는게 cpu의 성능이5%~15% 까지 상향.
optimize 옵션은 빠른검색이 되도록 인덱싱을 최적화 한다.
cpu 성능이 1%~3% 정도상향.
sorting 커스터마이징
index.fielddata.cache : soft
indices.fielddata.cache.size : 80%
indices.fielddata.cache.expire : 24h
검색 ThreadPool 설정.
threadpool :
index:
type : fixed
size : 30
queue_size : -1
jvm 메모리
jvm 의 메모리가 많을수록 관리에는 용이 할수있지만. 성능 면에서는떨어진다. 성능이 우선이라면
적을 수록 유리하다.
elasticsearch의 flush는 메모리와 트랜잭션 로그를 디스크로 저장한다.
elasticsearch는 lucene을 의존한다. lucene의 색인(index) 작업은 fsync를 사용하는데, fsync가 비싼 비용이 있어서 lucene은 여러 세그먼트로 색인을 관리하고 있다.
in memory buffer를 이용하여 sync 작업이 발생하면 fsync를 통해서 디스크에 저장한다.
curl -XPOST 'http://localhost:9200/myindex/_flush
2. refresh
refresh는 색인을 새로 고침의 의미가 있다. 즉, 검색이 되게 하는 (searchable)의 의미가 있다.
refresh주기가 시간내 검색이 되느냐 안되는냐를 결정한다. (보통 1초를 사용)
참조로 elasticsearch 문서에서는 거의 실시간(near real time, NRT)라는 단어를 사용하고 있다.
https://www.elastic.co/guide/en/elasticsearch/guide/current/near-real-time.html
만약 refresh 주기를 지정하지 않으면, 따로 호출을 주어 refresh를 임의로 호출하게 할 수 있다.
curl -XPOST 'http://localhost:9200/myindex/order/_settings' -d '{ "refresh_interval": -1 }'
curl -XPOST 'http://localhost:9200/myindex/order/_refresh'
참고로 flush와 refresh는 동시에 사용될 수 있다.
curl -XPOST 'http://localhost:9200/myindex/_flush?refresh=True'
3. 최적화(optimization)
파편화된 세그먼트를 세그먼트를 줄이고 검색 성능을 빨리 하도록 하여 색인을 통합한다. 검색 성능을 높이는데 의미를 두고 있다.
lucene이 사용하지 않는 세그먼트와 다큐먼트를 정리하는 IO 작업을 통해서 검색을 빠르게 한다. 세그먼트 수를 최소화시킨다. 최소한의 파일에만 접근하도록 한다.
$ curl -XPOST 'http://localhost:9200/myindex/_optimize'
최적화의 매개변수는 3개이다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-optimize.html
따라서 index를 copy 했다면 _flush 해주는 것이 필요하다.
ex) localhost:9200/_flush 또는 localhost:9200/index/_flush
'elasticsearch-logstash' 카테고리의 다른 글
elasticsearch 쿼리 예제와 설명. (0) | 2016.05.05 |
---|---|
elasticsearch flush에 대한 설명. (0) | 2016.05.03 |
elasticsearch shard replica (0) | 2016.05.03 |
elasticsearch 필터 조합하기, 쿼리 조합하기 (0) | 2016.05.03 |
elasticsearch query 참고! 한글!!!! (0) | 2016.05.02 |