1. docker로 elastic search 설치
docker pull docker.elastic.co/elasticsearch/elasticsearch:5.5.2
-> X-pack 30일 라이선스 포함, 만약 사용하지 않으려면 해제해야함
--> nginx 같은 reverse proxy의 auth를 앞단에 두거나 gateway appl.을 만들어서 request를 pass 하도록 하면 되지 않을까?
2. elastic search 구동
docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.5.2
(VM 외부 포트 9200-9200 포워딩해서 접속 가능)
3. 운영 환경에서는
$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
으로 조정 해 줌(기본 65536)
4. 기본 http auth는(X-pack 의존)
ID : elastic / PW : changeme
5. elasticsearch yml 설정을 컨테이너 내부에 override 할 경우
-v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
6. 설정파일
elasticsearch.yml (설정)
log4j2.properties (로깅)
2 종류가 주요 파일
7. 시스템 정보 전체적 조회
http://localhost:9200/_nodes
8. 기본적인 호출 구조 -> REST API
/index/type/document/[API -> _ 로 시작하는 함수명들(_search, _update, _mapping 등등)]
연산적용은 MVEL 문법을 기반으로 함
9. API 속성
_source : 데이터만 보기
_update : 업데이트
_search : 검색 -> ?q=[검색어] 로 검색 수행
-> /index1,index2...indexN/_search 로 복수 인덱스에서 검색 수행 가능
-> /_all/_search 는 전체 검색 (권장 안 함)
-> /_search 로 해도 전체 인덱스 검색
-> 상세한 조건 검색은 URI검색 혹은 Requestbody 검색으로
_mapping -> RDBMS의 스키마 역할을 함
/{index}/_mapping 으로 매핑 확인 가능
10. Field data type (한 번 매핑된 타입은 변경하지 못하기 때문에 신중하게 할 것. 매핑을 삭제하면 연결된 도큐먼트들도 다 날아감)
a simple type like text, keyword, date, long, double, boolean or ip.
a type which supports the hierarchical nature of JSON such as object or nested.
or a specialised type like geo_point, geo_shape, or completion.
11. 여러 데이터 한 꺼번에 입력
/{index}/{type}/_bulk
/_bulk
형식 : 첫 줄은 메타 데이터, 둘째 줄은 요청데이터
메타데이터 : {"동작" : {인덱스, 타입, 도큐먼트, id}}
-> 동작은 index, create, delete, update
-> index : 기존 데이터를 덮어씀, id를 자동생성함
-> create : 기존 데이터를 덮어쓰지 않음, id가 필수 값임
요청데이터 : json 데이터
Apache 루씬인가 뭔가 기반으로 된 검색엔진인데, 데이터 인덱싱이 검색하기에 매우 좋게 되어 있어서 검색 엔진 용도로 많이 쓴대여
jdbc랑 연동하는 input 플러그인도 있어서 oracle, postgres 같은 거의 데이터를 엘라스틱에 싱크 시켜서 검색용도로 사용 가능?
검색어간 연관 점수 이런 것도 메길 수 있고, 형태소 플러그인도 있고 해서 추천 검색어, 연관 검색어 이런 거 만들 때 좋다고 함
듣고보니까 진짜 그런 거 같기도 ???
우리 서비스에 검색 기능 좀 강화시켜보라고 오더가 떨어져서 ㅎㅎㅎ
갓왕께서 그러시면 어캄 ㅎㅎㅎ
근데 한국어로 나온 책들이 죄다 엘라스틱2.x 기준인데 지금 주로 쓰이는 버전이 5.x 라서 좀 다른 부분들이 있는 거 같음... 에러날 때마다 홈페이지 레퍼런스랑 구글링 해 가면서 차이나는 거 찾아가며 하는 중....
사돋 형님 사이트에 엘라스틱 도입하고 검색 엄청 빨라졌다네요~