Written by
최태열
on
on
ElasticSearch CRUD
데이터 저장(PUT)
# index 생성
PUT my_index
# Document 저장
PUT my_index/_doc/1
{
"message": "hello",
"name" : "신짱구"
}
# mapping을 통해 Field 속성 정의
# text type - 입력 데이터를 term 단위로 쪼개서 역색인 구조 구성
# keyword type - 입력된 문자열을 하나의 토큰으로 저장
PUT movie_search
{
"mappings": {
"properties": {
"movieCd": {
"type": "keyword"
},
"movieNm": {
"type": "text",
"analyzer": "standard"
},
"movieNmEn": {
"type": "text",
"analyzer": "standard"
},
"prdtYear": {
"type": "integer"
},
"openDt": {
"type": "integer"
},
"typeNm": {
"type": "keyword"
},
"prdtStatNm": {
"type": "keyword"
},
"nationAlt": {
"type": "keyword"
},
"genreAlt": {
"type": "keyword"
},
"repNationNm": {
"type": "keyword"
},
"repGenreNm": {
"type": "keyword"
},
"companies": {
"properties": {
"companyCd": {
"type": "keyword"
},
"companyNm": {
"type": "keyword"
}
}
},
"directors": {
"properties": {
"peopleNm": {
"type": "keyword"
}
}
}
}
}
}
데이터 조회(GET)
# index 정보 조회
GET my_index
# Document 조회
GET my_index/_doc/1
# index의 모든 Document 조회
GET my_index/_search
# 특정 Field만 조회
GET my_index/_search
{
"_source": "message"
}
# 특정 조건으로 검색 (Chrome, Google 중 하나라도 포함)
GET my_index/_search
{
"query": {
"match": {
"message": "Chrome Google"
}
}
}
# "하늘사 Google" 라는 문장 전체가 포함되어야 함
GET my_index/_search
{
"query": {
"match_phrase": {
"message": "하늘사 Google"
}
}
}
# pink, red 사이에 1개 이하의 단어 포함 가능
GET my_index/_search
{
"query": {
"match_phrase": {
"message": {
"query": "pink red",
"slop": 1
}
}
}
}
데이터 삭제(DELETE)
# index 삭제
DELETE my_index
# Document 삭제
DELETE my_index/_doc/1
# 조건을 통해 삭제하고 싶다면 POST의 _delete_by_query 기능을 활용한다.
데이터 수정(POST)
# 이미 존재하는 데이터 수정
POST my_index/_doc/1
{
"message" : "hello world",
"name" : "김철수"
}
# PUT 과 차이점 id를 지정하지 않을 경우 id 자동 생성
POST my_index/_doc
{
"message" : "hello world",
"name" : "김철수"
}
# 조건에 의한 document 삭제
POST my_index/_delete_by_query
{
"query" : {
"match" : {
"name" : "김철수"
}
}
}
- 벌크
여러 줄의 쿼리를 동시에 실행하는 방식
# index 선언하지 않고 post
# "_index"에 해당 index를 선언해야함
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
# index 미리 선언하고 post
# 하나의 index에 대한 쿼리만 실행할 수 있다.
POST my_index/_bulk
{"index":{"_id":1}}
{"message":"죽는 날까지 하늘을 우러러 한 점 부끄럼이 없기를"}
{"index":{"_id":2}}
{"message":"죽는 날까지 하늘을 우러러 한 점 부끄럼이 없기를, 잎새에 이는 바람에도 나는 괴로워했다"}
{"index":{"_id":3}}
{"message":"죽는 날까지 하늘을 우러러 한 점 부끄럼이 없기를, 잎새에 이는 바람에도 너는 괴로워했다"}
{"index":{"_id":4}}
{"message":"chrome google Chrome Google"}
{"index":{"_id":5}}
{"message":"하늘사 Google Chrome"}
Discussion and feedback