문서의 revision 관리 문제입니다. (es의 revision이 아닙니다.)


(박재혁) #1

es에서는 문서의 history 기능을 지원하지 않는걸로 알고 있습니다.
그래서 직업 구현하려 합니다.

{:_id 1 :docid 1 :name jh1 :my-rev 1}
[:_id 2 :docid 1 :name jh2 :my-rev 2}
[:_id 3 :docid 3 :name park :my-rev 1}

_id1의 내용을 변경해서 _id2를 새로 만들었습니다. 문서는 총 3개가 ES에 저장되어 있습니다.

제가 막히는 부분은
[:_id 2 :docid 1 :name jh2 :my-rev 2}
[:_id 3 :docid 3 :name park :my-rev 1}

위와 같은 결과물을 나오게 하는 쿼리를 만드는것입니다.

docid가 같을 경우 my-rev이 가장 큰 문서를 가져오는 쿼리입니다.

아이디어가 생각이 나지 않네요


(박재혁) #2

자문 자답이네요.
doc_history 인덱스를 만들고
문서 update할 때마다 기존 문서는 doc_history에 옮기고 새로은 문서만 사용하던 인덱스에 저장면 되겠네요.


(Henry Jeong) #3

아.. 제목에 es 의 revision 아니라고 하셨군요..ㅡ.ㅡ; 쿨럭
그럼 패스 입니다. ~

elasticsearch 에서 제공하는 version 을 활용해 보시는건 어떨가요?

[참고 문서]


https://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html

색인 할 때 version을 명시 하지 않으면 자동으로 auto increment 되고 가져 올때는 version 정보 명시 한거 가져 오게 되어 있습니다.
명시 하지 않으면 최신거 가져오구요.

용도에 맞는지는 모르겠으나 활용해 보셔도 될 것 같습니다.


(system) #4