- 색인
키워드를 찾아보기 쉽도록 정렬/나열한 목록(저장)- 역색인
키워드를 통해 문서를 찾아내느 방식(불러오기)- 역인덱스 구조를 만들어 저장한다.
이런 역 인덱스를 데이터가 저장되는 과정에서 만드므로
데이터를 입력할 때 저장이 아닌 색인한다고 표현한다.
기본적으로 PUT 이라는 명령어를 잘 활용하지 않는 것 같다. POST 로도 _update라는 것을 통해서 수정이 가능하고 POST 로도 수정이 가능하니...
기본적으로 PUT(입력) 를 사용하여 doc 을 생성만 하여도 자동으로 index가 생성이된다.
POST 는 수정이었다.... 그런데 POST 도 초기 입력에 사용을 할 수가 있다. PUT 명령어를 사용하여 입력을 할 때에 차이는 거의 없지만 POST 는 아이디를 자동적으로 생성하여 준다는 것 같다.
// 아이디를 입력하지 않고 저장하는데 아이디가 자동적으로 생성되어 저장됨
POST my_index/_doc
{
"name":"Jongmin Kim",
"message":"안녕하세요 Elasticsearch"
}
// 기존 doc 을 날리고 저장 된다. 데이터를 덮어쓰지 않고 필드를 변경하는 방법은 아래 POST 명령어를 사용한 방법을 참고
PUT my_index/_doc/{id}
{
"age": 40
}
// 데이터를 변경한다. (기존 데이터를 지우지 않고 변경/추가함)
POST my_index/_update/{id}
{
"doc" :{
"age": 40
}
}
PUT my_index/_doc/1
{
"name":"Jongmin Kim",
"message":"안녕하세요 Elasticsearch"
}
GET my_index/_doc/1
DELETE my_index/_doc/1
DELETE my_index
// value 랑 three 랑 같이 있는 것을 찾음
GET test/_search?q=field:three AND field:value
GET test/_search
GET test/_doc/1
GET test/_doc/2
// index, create 가 모두 입력의 의미
POST _bulk
{"index":{"_index":"test", "_id":"1"}}
{"field":"value one"}
{"index":{"_index":"test", "_id":"2"}}
{"field":"value two"}
{"delete":{"_index":"test", "_id":"2"}}
{"create":{"_index":"test", "_id":"3"}}
{"field":"value three"}
{"update":{"_index":"test", "_id":"1"}}
{"doc":{"field":"value two"}}
검색의 방법에는 URI 검색과 데이터 바디 검색 방법이 있다.
데이터 바디 검색이 queryDSL 이 아닐까 싶은데
queryDSL
Nosql 에 적재된 document 들을 rdbms 에서 우리가 자주
썻던것처럼 query 질의를 할 때 사용되는 기능.
URI 검색 방법
GET test/_search?q=two
test 인덱스에서 doc 들 중에서 two 라는 텍스트를 포함하는 doc들을 조회 한다.
q 파라미터를 줘서 간단하게 검색이 가능하다
q=field:three and field:four 이런식으로 사용이 가능하다
그런데 우리는 데이터 바디 검색방법을 자주 사용하게 된다.
querydsl 에 대한 설명은 다음 편에서
이어서 작성하기로...