본문 바로가기

etc

[Elasticsearch] Docker로 Elasticsearch 사용하기 / Python Elasticsearch Client로 테스트해보기

Elasticsearch란?

분산형  RESTful 실시간 검색 및 분석 엔진

보통 ELK Stack이라 해서 Elasticsearch, Logstash(수집 파이프라인), Kibana(시각화 도구)을 함께 사용한다.[참고]

 

Elasticsearch는 documents라고 하는 기본 데이터 단위가 있고, 이것이 index별로 관리되는 형태를 가진다. (간단히 말하면. 더 자세히 알아봐야겠지만..)


실습 환경

Windows 10 Home

Docker Toolbox

Docker 이미지 pull & run

$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.1
$ docker run -d --name elasticsearch-test
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.7.1

구동되는데 시간이 꽤 걸린다. 내 컴퓨터는 특히..

 

그리고 Docker Toolbox를 사용하기에 <가상머신 IP address>:9200에 접속하여 확인해봐야한다.

[Install Elasticsearch with Docker]

간단하게 설치 완료!

역시 도커는 매력적이다

 

Python Elasticsearch Client로 테스트해보기

https://github.com/elastic/elasticsearch-py

 

elastic/elasticsearch-py

Official Python low-level client for Elasticsearch. - elastic/elasticsearch-py

github.com

$ python -m venv venv
$ venv\Scripts\activate
$ pip install elasticsearch
from datetime import datetime
from elasticsearch import Elasticsearch

# by default, localhost:9200
es = Elasticsearch(hosts='<YOUR_VM_IP_ADDRESS>')

doc = {
    'author': 'kimchy',
    'text': 'Elasticsearch: cool. bonsai cool.',
    'timestamp': datetime.now(),
}
res = es.index(index="test-index", id=1, body=doc)
print(res['result'])

res = es.get(index="test-index", id=1)
print(res['_source'])

es.indices.refresh(index="test-index")

res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res['hits']['total']['value'])
for hit in res['hits']['hits']:
    print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])

분산형 RESTfu