Elasticsearch RESTAPI CRUD

SJO·2022년 10월 16일
0

ELKStack

목록 보기
7/7
post-thumbnail

테스트 데이터는 Kibana에서 사용하였던 Kibana sample data flights를 사용하였다.

조회

별다른 조건을 넣지 않고 조회할 시에는 모든 document를 검색한다.

GET kibana_sample_data_flights/_search


응답은 다음과 같이 JSON 형태로 반환된다.

match를 사용하여 인덱스의 필드에 검색한 단어가 포함된 document를 검색한다.

GET kibana_sample_data_flights/_search
{
	"query":{
    	"match":{
        	"DestCountry" : "AU"
        }
    }
}

같은 필드에 여러개의 인자를 집어넣으면 기본적으로 OR 조건으로 실행하기에 AND 조건을 사용하려면 필드 밑에 operator를 추가하여 야 한다.

GET kibana_sample_data_flights/_search
{
	"query":{
    	"query": {
    		"match": {
      			"DestWeather": {
        			"query": "Damaging Wind",
        			"operator": "and"
      			}
    		}
  		}
    }
}

match_phrase를 사용하면 단어의 순서도 모두 동일한 경우만 검색한다.

GET kibana_sample_data_flights/_search
{
	"query":{
    	"query": {
    		"match_phrase": {
      			"DestWeather": {
        			"query": "Damaging Wind",
        			"operator": "and"
      			}
    		}
  		}
    }
}

입력

PUT메소드를 사용하여 값을 입력한다.

PUT kibana_sample_data_flights/_doc
{
	//몸통 내용
}

id를 직접 지정하여 생성하고 싶을경우 create를 사용한다

PUT kibana_sample_data_flights/_create/1
{
	//몸통 내용
}

수정

POST메소드를 사용하여 수정한다.
POST는 기본적으로 id를 index 뒤에 붙이는 것으로 검색한다.

POST kibana_sample_data_flights/_update/1
{
	//몸통 내용
}

하지만 elasticsearch가 자동으로 id를 부여하는 경우네는 id를 알아내기 힘들기 때문에 검색조건을 붙여서 검색 후 업데이트 기능을 사용한다.
쿼리로 검색하여 조건이 일치하는 경우에만 수정하는 방식은 update_by_query를 사용한다.
script에 업데이트할 조건을 입력하고 query문 밑에 검색 조건을 입력하여 사용한다

POST kibana_sample_data_flights/_update_by_query?conflicts=proceed
{
  "script": {   
    "DestWeather": "Wind",
  },
  "query": { 
    "match": {
      "DestWeather": "Damaging Wind"
    }
  }
}

삭제

일반적인 삭제는 DELETE 메소드를 사용하여 Id를 조건으로 삭제한다.

DELETE /my-index-000001/_doc/1

하지만 수정과 비슷한 이유로 delete도 query문을 이용하여 삭제가 가능하다.
쿼리를 통한 삭제는 DELETE가 아닌 POST 메소드 에 delete_by_query라는 api로 수행한다.
query문 밑에 조건을 입력한다.

POST /kibana_sample_data_flights/_delete_by_query
{
  "query": {
    "match": {
      DestWeather": "Damaging Wind"
    }
  }
}

0개의 댓글