ElasticSearch Search API 필터 등 기본적인 검색 방법에 대해 소개. RDBMS 에서 쿼리한 것과 비교해보면서 ElasticSearch에서 쿼리해보면 좋을듯. Query client 는 Kibana Dev Tools 을 사용한다. 테스트 데이터 tpc-H 에서 생성된 데이터 중 supplier 테이블 데이터를 바탕으로 테스트 진행. supplier index template 정수형, 문자형, 텍스트 형에 따라 검색 특성을 보기 위해 아래와 같이 index template […]
[ElasticSearch] ELK + MetricBeat System Monitoring
ELK + MetricBeat System Monitoring Architecture 아래와 같은 구성도로 Monitoring System을 구축한다. 총 세 대의 머신으로 ELK 클러스터를 구성하며 metricbeat는 agent로서 서버 클러스터에는 설치될 필요가 없다. hostname components node1.elk elasticsearch, logstash, kibana node2.elk elasticsearch node3.elk elasticsearch 설치 사전 준비 JDK 1.8 이상 kernel vm.max_map_count = 262144 user limit elastic soft nofile 65536 elastic hard nofile […]
[Elasticsearch] elasticsearch-sql
Elasticsearch Sql ElasticSearch 6.3.x 버전부터 X-Pack을 통해 SQL-Like Query 기능을 제공한다. Index 에 대해서 SQL 질의를 바로 하는 것이 아니라, ElasticSearch 에 최적화된 DSL 로 translate 한 뒤 해당 DSL을 이용해 조회한다. SELECT SQL만 가능하고, multi-index 조회 (join SQL)은 수행되지 않는다. 또한 스칼라 서브쿼리 등 조금만 복잡해져도 잘 안 됨. Kibana와 Curl REST API 를 […]
[ElasticSearch] Configuration
ElasticSearch 설정/관리 elasticsearch.yml 아래는 엘라스틱서치 바이너리 내에 yml.template 로 기본 기재된 파라미터 Parameter Name Default Value cluster.name my-application node.name node-1 node.attr.rack r1 path.data /path/to/data path.logs /path/to/logs bootstrap.memory_lock true network.host 192.168.0.1 http.port 9200 discovery.zen.ping.unicast.hosts [“host1”, “host2”] discovery.zen.minimum_master_nodes gateway.recover_after_nodes 3 action.destructive_requires_name true cluster.name 클러스터 이름. 이 이름이 같아야 멤버 노드드들이 조인이 가능하다. 다른 엘라스틱서치 시스템 노드의 클러스터 […]
[ElasticSearch] Index Template
ElasticSearch Index templates Index template은 새로운 index가 생성될 때에, index 설정 또는 특정 필드의 데이터 타입을 정의해준다. ElasticSearch에 Logstash 등 수집기로 데이터 수집 전 index가 사전 생성될 필요가 없다. 그런데 그냥 수집하면 숫자나 날짜는 알아서 파싱을 하는데 나머지 대부분은 text로 해석한다. index template를 생성함으로써 index별로 Shard 갯수나 특정 필드에 대한 개별적인 관리를 할 수 있다. […]
[ElasticSearch] 실행 종료 스크립트
Elaticsearch 파라미터 변경해가며 테스트하는데, 실행 종료가 번거로워서 만들어본 스크립트 pid 파일을 남기는 프로세스에 응용해볼 수 있을 것 같다. 아래 스크립트를 이용하려면 어쨋든 $ES_PID 경로에 pid 파일을 남기도록 사전에 설정해주어야 한다. #!/bin/bash ES_HOME=/elastic/elasticsearch ES_PROC=$ES_HOME/bin/elasticsearch ES_PID=$ES_HOME/elasticsearch_pid if [ "$1" = "start" ];then if [ -e $ES_PID ];then echo "Start up failed, please check if ElasticSearch (PID:`cat $ES_PID`) […]
[ElasticSearch] ElasticSearch 6 버전에서 Head Plugin 설치
ElasticSearch Plugin Head Installation head plugin 을 이용해서 cluster 상태, index 정보, 간단한 쿼리 수행 등의 기능을 편리하게 사용할 수 있다. elasticsearch 6 버전에서는 plugin installer를 이용한 설치가 불가능하여 굳이 사용하기 위해서는 별도 웹 서비스가 필요하다. nodejs 를 통해서 웹서비스를 하고, 웹 소스는 github 에서 별도로 내려받는다. elasticsearch 6 버전부터는 X-PACK, Kibana 확장을 통해 인덱스 […]
[ElasticSearch] 2 nodes cluster 설치
Elasticsearch 설치 (2 node cluster) 사전 준비 시스템 사용자 생성 및 디렉토리 설정 시스템 사용자 생성 useradd elastic -g bigdata -u 9200 디렉토리 권한 설정 다음과 같이 엔진, 로그, 데이터파일 경로를 구분하여 설치를 진행한다. elasticsearch 엔진 경로 /app/elasticsearch elasticsearch 엔진 로그 경로 /logs/elasticsearch elasticsearch 데이터파일 (인덱스) 경로 /data/elasticsearch chown elastic:bigdata /app/elasticsearch chown elastic:bigdata /logs/elasticsearch chown […]