02. Index APIs - 02 :: 2015/05/19 08:59

Versioning


index document 버전 번호를 갖는다. 이와 연관된 version number index API request 대한 response 일부분으로 리턴된다. Index API 선택적으로 version parameter 명시되면 optimistic concurrency control (낙관적 병행 수행 제어 : RDBMS 같은 트랜잭션 기반 시스템에 적용되는 concurrency control) 허용한다. 이것은 operation 의도와는 반대로 실행되지 않도록 document 버전을 제어할 것이다. 버전에 대한 훌륭한 use case sample transactional read-and-update 수행하는 것이다. Document 특정 버전을 명시하면 최초에 읽는 동안 변경되지 않은 데이터를 읽을 있다. (업데이트 하기 위해서 데이터를 read하는 경우라면 preference _primary 설정하는 것을 권고한다.) 예를 들면 다음과 같다.


curl -XPUT 'localhost:9200/twitter/tweet/1?version=2' -d '{
  
"message" : "elasticsearch now has versioning support, double cool!"
}'


[NOTE]

Versioning 완전히 real-time (실시간)이다. 그리고 실시간 (near real time) 성인 검색 작업에는 영향을 주지 않는다. Version 제공하지 않을 경우에는 operation 어떤 버전도 체크하지 않고 실행된다.


기본적으로, 내부적인 versioning 1부터 시작하여 update, delete마다 1 증가한다. 선택적으로, version number 외부 (예를 들어, database 저장된 )으로 보강될 있다. 이런 기능을 가능하게 하기 위해서는 version_type external 설정되어야 한다. Version 값은 0이상 9.2e+18 이하의 numeric, long 값이어야만 한다. 매칭되는 version number 체크하는 대신에 External version type 사용할 때는 index request 전달된 version number 현재 저장된 document version 보다 큰지를 알기 위해 시스템에서 체크한다. 만약 크면, document index되고 새로운 number 사용될 것이다. 작거나 같으면 version conflict 발생하고 index operation 실패할 것이다.


Version number database 저장하도록 하면, async indexing operation 대한 strict ordering 유지할 필요가 없다. Database 데이터를 사용하여 elasticsearch index update하는 경우에도 external versioning 사용하면 단순화할 있다. 어떤 이유로든지 index operation 잘못되더라도 가장 마지막 버전이 사용되기 때문이다.


Version types


위에서 언급된 internal, external version type 다음으로, Elasticsearch 특정 use case 대한 다른 type 지원한다. 다음에서 다른 version type 의미에 대해서 살펴보자.


internal

주어진 version 저장된 document version 동일하다면 document index한다.


external or external_gt

주어진 version 저장된 document version보다 크거나 현재 존재하는 document 없으면 document index한다. 주어진 version 새로운 버전으로 사용되고 새로운 document 저장될 것이다. 적용된 버전은 양수의 long number이어야 한다.


external_gte

주어진 version 저장된 document version 이상일 경우 document를 index한다. Document 존재하지 않더라도 어쨌거나 operation 성공할 것이다. 주어진 version 새로운 version으로 사용되고, 새로운 document 함께 저장될 것이다. 적용된 버전은 양수의 long number이어야 한다.


force

저장된 document version과는 상관없이 document index한다. 또는 document 존재하지 않아도 index한다. 주어진 version 새로운 version으로 사용되고, 새로운 document 함께 저장될 것이다. version type 일반적으로 error 완전하게 하기 위해서 사용한다.


[NOTE]

external_gte force version type 주의 깊게 사용해야만 하는 특별한 use case 위해 고안되었다. 부적합하게 사용한다면, 데이터 유실이 발생할 있다.


Operation Type


Index operation 또한 "put-if-absent" 동작을 허용하도록 create operation 강제화 하는데 사용할 있는 op_type을 지원한다. Create 사용되면, index내에 이미 요청한 id document 존재한다면 index operation 실패할 것이다.


op_type parameter 사용하는 예제는 다음과 같다.


$ curl -XPUT 'http://localhost:9200/twitter/tweet/1?op_type=create' -d '{
  
"user" : "kimchy",
  
"post_date" : "2009-11-15T14:12:12",
  
"message" : "trying out Elasticsearch"
}'


다른 형태의 예제는 다음과 같다.


$ curl -XPUT 'http://localhost:9200/twitter/tweet/1/_create' -d '{
  
"user" : "kimchy",
  
"post_date" : "2009-11-15T14:12:12",
  
"message" : "trying out Elasticsearch"
}'

2015/05/19 08:59 2015/05/19 08:59
Trackback Address :: http://www.yongbi.net/trackback/724
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret
< PREV |  1  |  ...  79  |  80  |  81  |  82  |  83  |  84  |  85  |  86  |  87  |  ...  566  |  NEXT >