TTL
Document는 그와 관련된 ttl (Time To Live) 값을 가지고 index될 수 있다. 폐기된 document는 자동으로 삭제된다. Ttl값으로 제공되는 document의 폐기 일자는 document의 index되는 시점이나 값으로 제공되는 어느 특정 시간의 timestamp와 관련되어 있다. 값으로 제공되는 ttl값은 양수값이어야만 하고, milliseconds 단위의 숫자나 다음 예제에서 보여지는 적합한 시간 값이어야 한다.
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=86400000' -d '{
"user": "kimchy",
"message": "Trying out elasticsearch, so far
so good?"
}'
curl -XPUT 'http://localhost:9200/twitter/tweet/1?ttl=1d' -d '{
"user": "kimchy",
"message": "Trying out elasticsearch, so far
so good?"
}'
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
"_ttl": "1d",
"user": "kimchy",
"message": "Trying out elasticsearch, so far
so good?"
}'
더 많은 정보는 _ttl mappling page (https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-ttl-field.html) 에서 찾아볼 수 있다.
Distributed
Index operation은 위 routing section에서 본 것처럼 직접적으로 primary shard 기반 route하고, shard가 있는 실제 노드에서 수행된다. Primary shard에서 operation이 완료되면, 필요한 경우에, 업데이트는 replica에 분산처리 된다.
Write Consistency
잘못된 network side에 write하는 것을 방지하기 위해서, 기본적으로 index operation은 active shard의 수가 quorum (replicas의 2분의 1 + 1)일 때 성공적으로 수행된다. 이 기본값은 action.write_consistency 설정을 통해서 node-by-node별로 덮어쓸 수 있다. Operation별로 consistency parameter로 보내면 이 값을 변경시킬 수 있다.
유효한 write consistency 값으로는 one, quorum, all이 있다.
Replica의 숫자가 1인 경우 (전체 데이터 복제본이 2개) 에는 기본 동작은 1개의 copy (primary)에서 write가 발생하면, 성공한다.
Asynchronous Replication
[WARNING]
1.5.0에서 삭제되었음. Asynch replication을 지정하는 것은 deprecated (더 이상 사용되지 않고 앞으로 사라질 것으로 마크) 되었고, 2.0.0에서는 삭제될 것이다.
기본적으로 index operation은 replication group에 있는 모든 shard가 document를 index하고 나서 리턴한다. (sync replication임). Asynchronous replication을 사용하기 위해서는 background로 replication process가 일어나기 때문에 replication parameter를 async로 설정해야 한다. Asynchronous replication이 사용될 때, index operation은 primary shard에 성공적으로 operation이 수행되었을 경우에 바로 결과를 리턴할 것이다.
Replication 설정의 기본 값은 sync이다. 그리고 이 기본 값은 action.replication_type 설정을 사용하여 노드별 기본 설정값으로 덮어쓸 수 있다. Replication type의 유효한 값으로는, sync와 async가 있다. Operatio별로 이 동작을 다르게 하기 위해서는 replication request parameter를 이용할 수 있다.
Refresh
Operation이 발생한 이후 즉시 (전체 인덱스가 아니라) shard를 refresh하기 위해서, 그리고 즉시 검색 결과에 operation이 적용된 document가 나타나게 하기 위해서는 refresh parameter를 true로 설정하면 된다. 이 옵션을 true로 설정하는 것은, indexing하는 것과 검색하는 양쪽 상황에서 성능상 문제를 일으키지 않는다는 주의 깊은 생각과 확신 속에서 수행되어야만 한다. Get API를 통해서 document를 조회하는 것은 realtime으로 이루어진다는 것을 유의하라.
Timeout
Index operation을 수행하도록 할당된 primary shard는 index operation이 실행되고 있을 때는 이용할 수 없다. 여기에는 몇 가지 이유가 있는데, primary shard는 gateway로부터 바로 기록되고 재배치가 일어나기 때문이다. 기본적으로 index operation은 primary shard를 사용할 수 있을 때까지 약 1분 정도를 기다린다. 1분 이후에는 실패로 간주하고 오류를 응답한다. Timeout parameter는 얼마나 오래 응답을 기다릴 것인지를 명시적으로 설정하는데 사용된다. 다음 예제에서는 5분으로 설정하고 있다.
$ curl -XPUT 'http://localhost:9200/twitter/tweet/1?timeout=5m' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}'
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/726