kibana의 개발 툴을 사용하여 쿼리를 실행해 볼수 있다. 물론 curl을 사용하여 elasticsearch로 직접 요청을 할 수도 있지만 편리한 학습을 위해 kibana에서 제공하는 방법을 사용하여 설명하고자 한다. docker를 사용한 elasticsearch 와 kibana 서버 구성은 다음의 링크의 설명에서 보고 설치하고 환경구성을 한다.
6.도커(Docker) - Elasticsearch, Kibana 구성하기
elasticsearch, kibana를 설치한 이미지를 내려받기만 하면 관련 서버를 손쉽게 구성할 수 있다. docker network create elastic docker pull docker.elastic.co/elasticsearch/elasticsearch:8.1.3 docker run --..
juhpark.tistory.com
elasticsearch, kibana 구성이 완료 되었으면 kibana 화면을 웹브라우져에서 오픈한다. 접속 주소는 http://localhost:5601/ 이다.

먼저 로그인을 한다. 패스워드는 처음 설치할 때의 패스워드를 기억하고 있어야 한다. 만일 잊어버린 경우 다음과 같이 패스워드를 초기화 할수 있다.
docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
로그인을 하고 나면, 먼저 샘플데이터를 올려서 테스트를 해 볼수 있다. 아래 화면의 Try Sample data 메뉴를 클릭한다.

아래에 보이는 Add data버튼을 클릭하여 3개의 샘플데이터를 모두 등록한다.

상단의 두번째줄의 첫번째 아이콘[햄버거 버튼]을 클릭하면 왼쪽에 메뉴리스트가 조회되고 Management항목에 Dev Tools 를 클릭하면 elasticsearch 쿼리를 사용하여 데이터 내용을 조회해 볼수 있다.

아래와 같은 창이 열리고 왼쪽 창에는 쿼리를 입력할 수 있고, 오른쪽 창에는 실행된 결과를 볼수 있다. Elasticsearch 의 쿼리와 결과는 JSON형태의 데이터로 처리 된다. 왼쪽 창에 쿼리를 입력하고 삼각형 버튼을 클릭하여 실행을 하거나 Contro+Enter 키를 클릭하여 실행이 가능하다.
History링크를 클릭하면 과거에 실행했던 쿼리 목록을 볼수 있고, 오른쪽에는 실행결과와 실행시간을 보여준다. 역시나 빠른 응답속도를 확인할 수 있다.

1. 클러스터(cluster) 상태 조회
클러스터의 상태를 조회하는 명령어이다. 클러스터의 상태와 노드갯수 등등 다양한 정보를 조회할 수 있다.
# 조회명령 GET _cat/health?v # v옵션을 입력하는 경우 제목이 같이 표시된다. # 결과 epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1651926239 12:23:59 docker-cluster green 1 1 16 16 0 0 1 0 - 94.1%
2. 인덱스(indices) 상태 조회
Elasticsearch의 데이터의 묶음, RDBMS의 경우 테이블에 해당하는 것이 인덱스(indices)라고 불리우는데, 다음과 같이 조회한다. 조회된 결과를 보면 위에서 추가한 샘플데이터 3개가 잘 등록되어져 있는 것을 볼수 있다. 각 indices의 상태, 사이즈 등을 확인 할수 있다.
# 조회명령 GET _cat/indices?v # 결과 health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open kibana_sample_data_ecommerce SelvO6UnTTOu9V2MOIZGRA 1 0 4675 0 4.1mb 4.1mb green open kibana_sample_data_logs mFnZBfRVQ7y_KW9EzkUoRg 1 0 14074 0 7.5mb 7.5mb green open kibana_sample_data_flights bNlmwK4xRu64rgnCVw0CXQ 1 0 13059 0 5.8mb 5.8mb
3. 인덱스(indices) 등록과 삭제
# 인덱스생성 PUT test_index # 실행결과 { "acknowledged" : true, "shards_acknowledged" : true, "index" : "test_index" } # 인덱스 삭제 DELETE test_index # 실행결과 { "acknowledged" : true }
4. 샘플데이터 조회해 보기
인덱스 구조를 다음과 같이 조회를 할수 있는데 문서들이 저장되는 형식을 지정한다고 보면 된다. 각 필드의 타입 등등 구조를 조회해 볼수 있다.
# 인덱스구조 조회하기 GET kibana_sample_data_logs # 실행결과 { "kibana_sample_data_logs" : { "aliases" : { }, "mappings" : { "properties" : { "@timestamp" : { "type" : "alias", "path" : "timestamp" }, ... 중략 ... "utc_time" : { "type" : "date" } } }, "settings" : { "index" : { "routing" : { "allocation" : { "include" : { "_tier_preference" : "data_content" } } }, "number_of_shards" : "1", "auto_expand_replicas" : "0-1", "provided_name" : "kibana_sample_data_logs", "creation_date" : "1651925004586", "number_of_replicas" : "0", "uuid" : "mFnZBfRVQ7y_KW9EzkUoRg", "version" : { "created" : "8010399" } } } } }
5. 데이터 내용 조회해 보기
인덱스 상관없이 전체 문서를 검색할 경우, 인덱스를 표시하지 않고 그냥 _search 구분을 사용하여 조회하면 전체 문서가 아래와 같이 조회된다. 결과에는 took: 실행에 걸린시간, shards 정보를 보여주고, hits 는 실제 검색된 문서가 배열로 포함되어 있다. default로는 10개의 데이터만 먼저 보여주기 때문에 정말 빠르게 검색결과를 확인 할 수 있다. 아래 1은 밀리세컨드 단위이니 정말 빠르다.
# 전체 검색하기 - 모든 인덱스(indices)의 문서를 나열한다. GET _search { "query": { "match_all": {} } } # 결과 { "took" : 1, "timed_out" : false, "_shards" : { "total" : 4, "successful" : 4, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : 1.0, "hits" : [ { "_index" : ".ds-logs-my_app-default-2022.05.06-000001", "_id" : "Ks9DmYABp_DGFCAy9hN7", "_score" : 1.0, "_source" : { "@timestamp" : "2099-05-06T16:21:15.000Z", "event" : { "original" : """192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736""" } } }, { "_index" : "kibana_sample_data_ecommerce", "_id" : "GuNnnoABhLECi67BGAKf", "_score" : 1.0, "_source" : { "category" : [ "Men's Clothing" ], "currency" : "EUR", "customer_first_name" : "Eddie", "customer_full_name" : "Eddie Underwood", ''' 후략 '''
특정 인덱스의 문서를 조회하기
# 특정 인덱스의 문서 전제 조회하기 GET {index}/_search { "query": { "match_all": {} } } # 특정 인덱스의 특정 ID 문서 조회하기 GET {index}/_doc/{_id 값} # 특정 인덱스의 특정 ID 문서의 내용만 조회하기 GET {index}/_search/{_id 값} # HEAD 명령을 사용하면 문서가 존재하는지 여부를 확인할 수 있다. 결과로 200-OK이면 검색 성공 HEAD {index}/_doc/{_id 값} HEAD {index}/_search/{_id 값} # 위 {index}에 kibana_sample_data_logs 인덱스를 입력하여 테스트 해볼 수 있다.