본문 바로가기
엘라스틱서치

4. 데이터 처리

by N.Damgom 2021. 8. 31.

4. 데이터 처리

  • 엘라스틱서치는 검색, 저장, 설정 등 모든 정보를 JSON 도큐먼트 형식으로 주고받는다.
  • 엘라스틱서치는 자원별로 고유한 URL을 매핑해서 사용한다.
  • REST API를 활용해 CRUD가 가능하다.
  • curl 명령어나 postman, kibana devtools를 사용할 수 있다. (키바나 포트는 5601)

CRUD

  • 도큐먼트를 접근할 때는 <인덱스명>/_doc/<id> 처럼 고정자 _doc 을 사용한다.
  • curl -XPUT "http://localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d' (d는 데이터 입력 옵션)
  • 데이터를 입력할 때는 PUT 메서드를 사용한다.
  • PUT 메서드 사용시 아이디는 자동으로 생성되지 않는다.
  •  
  • PUT my_index/_doc/1 { "name":"Pangyo Kim", "message":"안녕하세요 Elasticsearch" }
  • 문서를 새로 생성 시 결과로 "result": "created"가 표시되며 덮어써질경우 "updated"가 표시된다.
  • 덮어씌워지는 것을 방지하기 위해서는 _create를 사용하면 된다.
  • 조회는 GET 메서드를 사용한다.
  • GET my_index/_doc/1
  • 문서의 내용 "_source"에 있다.
  • 삭제는 DELETE 메서드를 사용한다. 도큐먼트와 인덱스 모두 사용가능하다.
  • 반환 결과는 "result": "deleted" or "found": false
  • 인덱스 삭제시 "acknowledged": true 응답을 받는다.
  • 수정은 POST 메서드를 사용한다.
  • id를 지정하지 않는 경우 임의의 문자열로 도큐먼트 아이디가 생성된다.
  • POST my_index/_doc
    {
      "name":"Pangyo Kim",
      "message":"안녕하세요 Elasticsearch"
    }
  • _update 를 사용할 경우 일부 필드만 변경할 수 있으나 내부적으로는 새로 생성된다.
  • 해당 문서의 "_version" 값이 하나 증가한다.
  • POST my_index/_update/1
    {
      "doc": {
        "message":"안녕하세요 Kibana"
      }
    }

벌크 API

  • 여러 명렁을 배치로 실행하는 API 이다.
  • 명령문과 데이터문을 반드시 각 한 줄씩 입력해야 한다. (DELETE는 명령문만 있다.)
  • POST _bulk
    {"index":{"_index":"test", "_id":"1"}}
    {"field":"value one"}
    {"index":{"_index":"test", "_id":"2"}}
    {"field":"value two"}
  • <메서드> 인덱스명/_bulk로도 사용할 수 있다.
  • 대량의 데이터를 쓸 때는 반드시 bulk API를 쓰자.
  • Logstash, SDK 등은 bulk API를 사용한다.
  • 엘라스틱 서치는 트랜잭션을 지원하지 않으므로 오류 시 재인덱싱이 필요하다.
  • 벌크 명령을 --data-binary @filename을 이용해 파일에 저장된 내용을 실행할 수 있다.

검색 API

  • 검색은 인덱스 단위로 이루어진다.
  • url 검색은 GET test/_search?q=value AND three 처럼 사용한다.
  • 데이터 본문 검색은 json 형식으로 엘라스틱서치의 querydsl을 사용한다.
  • GET test/_search
    {
      "query": {
        "match": {
          "field": "value"
        }
      }
    }
  • 쿼리 입력은 항상 "query" 지정자로 시작한다.
  • 멀티 테넌시 사용시 인덱스를 쉼표로 연결하거나 와일드카드 *를 사용할 수 있다.

출처: https://esbook.kimjmin.net

'엘라스틱서치' 카테고리의 다른 글

6. 데이터 색인과 텍스트 분석  (0) 2021.09.06
5. 검색과 쿼리  (0) 2021.09.05
3. 시스템 구조  (0) 2021.08.31
2. 시작하기  (0) 2021.08.31
1. 서문  (0) 2021.08.31