2.X/1. Getting Started

1-03-06. Updating a Whole Document

drscg 2017. 10. 1. 11:34

Documents in Elasticsearch are immutable; we cannot change them. Instead, if we need to update an existing document, we reindex or replace it, which we can do using the same index API that we have already discussed in Indexing a Document.

Elasticsearch에서 document는 불변 이다. document를 변경할 수 없다. 대신, 기존의 document를 업데이트하려면, reindex 또는 replace해야 한다. Indexing a Document에서 이미 이야기했던 것과 동일한 index API를 사용할 수 있다.

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "I am starting to get the hang of this...",
  "date":  "2014/01/02"
}

In the response, we can see that Elasticsearch has incremented the _version number:

response에서, Elasticsearch가 _version 을 증가시켰음을 알 수 있다.

{
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 2,
  "created":   false 
}

동일한 index, type, id를 가지는 document가 이미 존재하기 때문에, created flag는 false 로 설정되어 있다.

Internally, Elasticsearch has marked the old document as deleted and added an entirely new document. The old version of the document doesn’t disappear immediately, although you won’t be able to access it. Elasticsearch cleans up deleted documents in the background as you continue to index more data.

내부적으로, Elasticsearch는 기존 document를 삭제된 것으로 표시하고, 완전히 새로운 document를 추가한다. 기존 버전의 document는 비록 access할 수 없지만, 즉시 사라지지는 않는다. 더 많은 데이터의 색인을 계속하면, Elasticsearch는 background에서 삭제된 document를 정리한다.

Later in this chapter, we introduce the update API, which can be used to make partial updates to a document. This API appears to change documents in place, but actually Elasticsearch is following exactly the same process as described previously:

이 장의 후반부에서, document의 부분적 update에 이용되는, update API에 대해 이야기할 것이다. 이 API가 원래의 document를 변경하는 것처럼 보이지만, 실제로 Elasticsearch는 위에서 언급한 것과 정확히 동일한 프로세스를 따른다.

  1. Retrieve the JSON from the old document

    기존 document에서 JSON을 가져온다.

  2. Change it

    그것을 바꾼다.

  3. Delete the old document

    기존 document를 지운다.

  4. Index a new document

    새로운 document를 색인 한다.

The only difference is that the update API achieves this through a single client request, instead of requiring separate get and index requests.

유일한 차이점은 update API는 별도의 getindex request를 요구하지 않고, 단일 클라이언트 request를 통해, 이를 처리한다는 것이다

'2.X > 1. Getting Started' 카테고리의 다른 글

1-03-04. Retrieving a Document  (0) 2017.10.01
1-03-05. Checking Whether a Document Exists  (0) 2017.10.01
1-03-07. Creating a New Document  (0) 2017.10.01
1-03-08. Deleting a Document  (0) 2017.10.01
1-03-09. Dealing with Conflicts  (0) 2017.10.01