ElasticSearch search_API 테스트

ElasticSearch 의 API 테스트

공식 홈페이지에서 제공하는 API로 테스트를 진행해본다.

0. 서비스 시작

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

1. 현재 존재하는 인덱스 정보 확인

curl 'localhost:9200/_cat/indices?v'

명령어를 날려본다.

health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_7.13.3_001              GBGe6W1TSk6iXsPGWT4kQA   1   0         12            0      2.1mb          2.1mb
yellow open   bank                            YnmIukjxRm2k0CERwzBxyQ   1   1       1000            0    379.3kb        379.3kb
green  open   .apm-custom-link                0K_O23HVSjOoBvAD37sxhg   1   0          0            0       208b           208b
green  open   .kibana-event-log-7.13.3-000001 AKHLKRZcQK63_R7L6Qc3VA   1   0          1            0      5.6kb          5.6kb
green  open   .apm-agent-configuration        hrkWQcb0S8-zjlDhI-j8CA   1   0          0            0       208b           208b
green  open   .kibana_task_manager_7.13.3_001 gXsCASMpTySwy1PUXR30ww   1   0          9            0     14.8kb         14.8kb

이전에 bulkAPI를 이용해 집어넣었던 bank 인덱스가 있고, 나머지는 디폴트로 생긴 데이터들이다.

2. search API - 검색해보기

postman을 설치했어서 postman으로 한다.
터미널에 postman을 입력한다. 혹시나 설치를 안했다면,
이 포스팅을 보고 설치해두길 바란다!
쿼리 DSL로 body에 담아서 보냈다.

GET방식

http://localhost:9200/bank/_search

body 내용

{
  "query": {
    "match_all": {
    }
  }
}

결과를 스크린샷으로 보면 이렇게 된다!

결과로 나온 json을 확인해보면 다음과 같다.
도큐먼트는 1000개가 나왔는데, 1개만 예시로 보여준다.


    "took": 900, -> 쿼리 실행시간이 900ms
    "timed_out": false, -> 쿼리 실행하다가 시간 초과가 됐나?
    "_shards": {
        "total": 1, -> 쿼리를 요청한 샤드의 개수 / 이 인덱스는 1개의 샤드로 이뤄져 있음을 알 수 있다.
        "successful": 1, -> 검색 요청에 성공한 샤드의 개수 
        "skipped": 0, -> 스킵한 샤드의 개수
        "failed": 0 -> 실패한 샤드의 개수 
    },
    요청으로 리턴된 데이터 중, 여기까지가 메타 필드이다.
    --------------------------------------------------
    "hits": {
        "total": {
            "value": 1000, ->매칭된 전체 문서 개수
            "relation": "eq" -> 원래 디폴트로 매핑되는 문서의 개수는 최대 10000개이다. 만약에 문서가 20000개이면 10000개만 가져오되, gte라고 나온다.(greater than equal)
        },
        "max_score": 1.0, -> 일치하는 도큐먼트의 스코어 값 중 가장 높은 값
        "hits": [ -> 스코어가 높은 상위 도큐먼트 10개를 보여줌 
            {
                "_index": "bank", -> 뱅크
                "_type": "account", -> 계정
                "_id": "1", -> 아이디가 1이다.
                "_score": 1.0, -> 가장 높은 스코어
                "_source": {
                    "account_number": 1,
                    "balance": 39225,
                    "firstname": "Amber",
                    "lastname": "Duke",
                    "age": 32,
                    "gender": "M",
                    "address": "880 Holmes Lane",
                    "employer": "Pyrami",
                    "email": "[email protected]",
                    "city": "Brogan",
                    "state": "IL"
                }
            }
 		]

이제 집중적으로 DSL을 확인해보자.
다음 포스팅에서 확인한다!!

좋은 웹페이지 즐겨찾기