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 데이터