일래스틱서치에서 특정 필드를 추가하려면 다음과 같이 매핑을 추가한다. 


* 필드 추가하기

curl -XPUT 'http://localhost:9200/blog/_mapping/comment' -d '
{
  "comment" : {
  "properties" : {
     "url" : {"type" : "string" }
    }
  }
}

'




* 필드 삭제하기

사실상 필드 삭제는 없다. 루씬의 색인 기능 때문에 따로 삭제가 불가능해서 새롭게 색인을 구성해야 한다. 전문용어로 reindex 이다.


그러나, 필드 삭제는 못하지만, 데이터만 삭제는 부분 변경(partial update)만으로 가능하다. 



* 추가된 필드에 데이터 저장하기


추가된 필드에 데이터를 저장하기 위해서 PUT http 메소드를 실행하면 기존 데이터는 덮어쓰인다. 따라서 이 부분은 부분 변경 (partial update)를 사용해야 한다.



아래와 같이 실행하면 기존 자료(_id 가 8130295인 데이터)는 사라진다. 즉 아래 데이터는 다큐먼트 데이터 변경 인 셈이다. 

curl -XPUT localhost:9200/blog/comment/8130295 -d '{
"url" : "m1"
}'



새롭게 추가된 필드에 데이터를 변경하려면 부분 변경(partial update)를 실행한다. 두 가지 방법이 있다.


1. _update 호출


curl -XPOST http://localhost:9200/blog/comment/8130295/_update -d '

{

   "doc" : {

       "url" : "http://www.google.com"

    }

}



2. 스크립트 기능 이용


curl -XPOST localhost:9200/blog/comment/8130295/_update -d '{
"script" : "ctx._source.url=new_url", "params" : { "new_url" : "................" }

}'


verion이 하나 추가된 다큐먼트 데이터가 생성된다. 확인은 다음과 같이 할 수 있다.


curl -XGET localhost:9200/blog/comment/8130295 




upsert 라는 것이 있는다. 해당 필드의 데이터의 값이 없다면 초기화값으로 넣을 수 있는 값이다. 


curl -XPOST http://localhost:9200/blog/comment/8130295/_update -d '

{

      "script" : "ctx._source.views+=1",

     "upsert": {

       "views": 1

    }

}



* 참고 

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html

https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html



Posted by '김용환'
,