Elasticsearch는 data manipulation과 준 실시간 (near realtime) 검색 기능을 제공한다. 기본적으로 실제로 data를 index/update/delete한 시점에서 검색 결과로 나타나기까지 1초 delay (refresh interval)가 발생한다. 이것은 transaction이 완료된 이후에 즉시 data가 나타나는 SQL과 같은 다른 platform과 가장 중요한 차이점이다.
[Indexing/Replacing Documents]
앞에서 어떻게 single document를 index하는지 살펴보았다. 그때 command를 다시 호출해 보자.
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
"name": "John
Doe"
}'
위의 command는 customer index에 external type으로 ID 1인 document를 index할 것이다. 만약 다른 document (혹은 같은)로 위의 command를 다시 실행하면, elasticsecarh는 기존에 존재하는 ID 1에 새로운 document로 replace할 것이다.
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
"name": "Jane
Doe"
}'
위의 command는 ID 1인 document의 내용 중에서 이름을 "John Doe"에서 "Jane Doe"로 변경한다. 다른 한편, 만약 다른 ID를 사용한다면, 새로운 document가 index되고, 기존에 입력한 document는 변경되지 않고 남아 있게 된다.
curl -XPUT 'localhost:9200/customer/external/2?pretty' -d '
{
"name": "Jane
Doe"
}'
위의 결과로 ID 2를 가지는 새로운 document가 index된다.
Index될 때, ID part는 optional이다. ID가 지정되지 않으면 elasticsearch는 random ID를 생성하고 그것을 이용해 document를 index한다. Elasticsearch가 생성한 ID (이전에 명시적으로 지정한 ID도 마찬가지로)는 index API call의 한 부분으로 리턴된다.
명시적인 ID를 지정하지 않고 document를 index하기 위한 예제는 다음과 같다.
curl -XPOST 'localhost:9200/customer/external?pretty' -d '
{
"name": "Jane
Doe"
}'
명시적으로 ID를 지정하지 않을 때는 PUT 대신 POST를 사용한다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/694