저번시간에는 INDEX 생성을 해보았다.
오늘은 만든 test DB에 RDB에서는 row, 엘라스틱에서는 document 라는걸 만들어 보겠다.
POST /test/_doc?pretty 에 대한 설명
- POST -> INSERT 라는 의미
- /test -> test DB(인덱스)에 멀 하겠다.
- /_doc -> _doc 라는 table 에 멀 하겠다.
- ?pretty -> 출력을 예쁘게 하겠다.
그 다음 select 를 해보겠다.
내가 insert 한 내용들이 잘 insert 되었따.
위에 나오는 types removal 라는 에러에 대해 좀 애기해보겠다.
엘라스틱에서 type이라는 개념이 RDB 에서는 Table 과 매칭이 된다.
그래서 예전에는 저 type 을 원하는 값으로 insert 하여 데이터의 유형을 파악했다. 지금도 수정은 된다.
그런데 무슨 버전부터인지는 모르겠지만 앞으로는 저 type 을
1개의 index에 1개의 _doc 를 권장한다고 함
Insert 를 했으니 RDB 와 또 비교해보려면 데이터의 타입은 머지?? 궁금하다.
해보자
엘라스틱은 데이터가 들어오는 순간 알아서 데이터의 타입을 정해버린다. (한번 정해진 타입은 변경 불가)
이것을 mapping 이라 한다.
물론 사전에 미리 맵핑을 정의할수도 있다.
대충 보면 알겠지만 boolean, long 이런거는 걍 넘어가고 주의 해야 할 string 타입만 좀 알아보자.
엘라스틱은 총 2가의 string 타입이 있다.
- text
- keyword
그전에 형태소 분석기(analyze) 를 좀 알아볼 필요가 있다. 머냐면
'안녕하세요. 반갑습니다.' 라고 insert 된 string 문장을 우리가 한글 검색을 하면 기본적으로 스페이스로 구분을 한다.
'안녕하세요.' 하나
'반갑습니다.' 하나
그래서 '안녕' 도 검색이 안되고 '반갑' 도 검색이 안된다. '안녕하세요', '반갑습니다' 만 검색이 된다.
이처럼 말을 분석해서 검색을 도와주는것을 형태소 분석기 라고 한다.
그럼 다시 돌아와서
text 타입은 형태소 분석기를 적용할수 있는 타입이다. 그래서 '안녕하세요. 반갑습니다.' 를 검색하기 위해선
'안녕하세요'
'반갑습니다'
둘줄 하나만 select 때려도 나온다. 그런데
keyword 타입은 분석기를 적용할 수 없는 타입니다. 그래서 '안녕하세요. 반갑습니다.' 를 검색하기 위해선
'안녕하세요. 반갑습니다.' 를 점하나 틀리지 않고 검색해야 검색이 가능하다.
이상 insert 를 해보고 타입을 알아봤다. 후...
다음 시간에는 mapping 을 알아보자
'Elasticsearch' 카테고리의 다른 글
Elasticsearch mapping (Feat.wonya) (0) | 2020.01.02 |
---|---|
Elasticsearch 테이블 생성 (Feat.wonya) (0) | 2020.01.02 |
window 환경 elasticsearch 셋팅 (Feat.wonya) (0) | 2020.01.02 |
elasticsearch 시작하며 (Feat.wonya) (0) | 2019.12.29 |