본문 바로가기
DATA/ElasticSearch

엘라스틱서치 Elasticsearch ES 란?

by bzerome240 2022. 4. 10.

ElasticSearch

: 검색에 자주 쓰이는 검색 엔진 

 

특징

  • 검색 엔진, 데이터 저장소, 분석 엔진으로 활용 가능하다.
  • json 형식으로 저장되고 사용된다. (non schema)
  • 데이터 CRUD 작업은 REST API를 통해 수행한다.
  • index를 여러 shard로 나누어 data를 여러 node로 분산하는 접근 방식을 이용한다.
  • 구조: 클러스터로 구성되며, 클러스터 안에 노드, 노드 안에 인덱스, 인덱스 안에 샤드, 샤드 안에 세그먼트로 구성된다. 
  • 검색속도가 빠른 이유: 역색인 자료 구조로 인해 빠르다. (* 역색인: 키워드를 통해 무너를 찾아내는 방식)

 

구성

  • Physical 구성
Cluster > Node (검색서버) > Index (테이블) > Shard (데이터 분류) > documents (데이터)
  • Logical 구성
Index > Type > Document > field:value

 

Elasticsearch vs RDB

https://steady-coding.tistory.com/573

SQL Query DSL
select * from type_name limit 0/10 "match_all" : {}
...
"from" : 0,
"size" : 10
select field1, field2 from type_name where search_field='elasticsearch' "term" : {
  "search_field" : {
    "value" : "elasticsearch"
  }
}
...
"fields" : [
  "field1", "field2"
]
select * from type_name where search_field > '222' order by search_field desc "range" : {
  "search_field" : {
    "gt" : "222"
  }
}
...
"sort" : [
  {
    "search_field" : {
      "order" : "desc"
    }
  }
]

 


ELK (Elasticsearch, Logstash, Kibana)

주로 흩어진 로그를 한곳으로 모아서, 원하는 데이터를 빠르게 검색하고 시각화하고 모니터링하기 위해 사용한다.

 

  • Logstash: 다양한 소스(DB, csv 파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달
  • Kibana: Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링

 


Queries vs Filters

 

  • Query 대신 filtered query와 filter를 사용한다
  • and, or, not filter 대신 boll filter를 사용한다

 

쿼리 컨텍스트

: 질의에 대한 유사도를 계산해 이를 기준으로 정확한 결과를 먼저 보여줌

연관성에 대한 스코어 결과 제공

{
	"query" : {
    	"match" : {
        	"category" : "clothing"
        }
    }
}

 

 

필터 컨텍스트

: 유사도를 계산하지 않고 일치 여부에 따른 결과만 반환

스코어를 계산하지 않고 예/아니오 결과만 제공

{
	"query" : {
    	"bool" : {
        	"filter" : {
            	"day_of_week" : "Friday"
           	}
        }
    }
}

 


 

쿼리 스트링

: 간단한 쿼리를 GET 형식으로 URI 작성하여 조회 가능하다

ex) http://~/_search?q=customer:Mary

 

쿼리 DSL

: 복잡한 쿼리를 POST 형식으로 Body에 작성하여 조회 가능하다

 

 

 

 

 

 

 


참고

 

 

[elasticsearch] [1] 엘라스틱서치 용어정리, 시작

ElasticSearch 란? 검색에 자주 쓰이는 Apache Lucene Library를 기반으로 만들어진 검색 엔진 어플리...

blog.naver.com

 

 

[데이터베이스] Elasticsearch란?

cs-study에서 스터디를 진행하고 있습니다. Elasticsearch란? Elasticsearch는 Apache Lucene(아파치 루씬) 기반의 Java 오픈 소스 분산 검색 엔진이다. Elasticsearch를 통해 루씬 라이브러리(Java에서 개발한 정..

steady-coding.tistory.com

 

엘라스틱서치(elasticSearch) 검색 - 1부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 4장을 정리하여 쓴 글입니다. 엘라스틱서치는 전문 검색 기능을 시작으로 꾸준히 성장했으며, 다양한 검색 쿼리를 지원하고 있다.  1부에

flambeeyoga.tistory.com

 

 

 

 

728x90
반응형

댓글