검색(Search)

Elasticsearch는 사용자가 여러가지 검색 조건들에 대해 목표로 하는 검색 기능을 구현할 수 있도록 다양한 기능들을 제공. 데이터를 실제로 검색에 사용되는 검색어인 텀(Term)으로 분석 과정을 거쳐 저장하기 때문에 검색 시 대소문자, 단수나 복수, 원형 여부와 상관 없이 검색이 가능.

이러한 Elasticsearch의 특징을 풀 텍스트 검색(Full Text Search)라고 하며, 한국어로 전문 검색 이라고 함.

Query DSL (Domain Specific Language)

검색을 위한 쿼리 기능을 제공하며, 이런 쿼리 기능을 Query DSL(Domain Specific Language) 이라고 얘기하며, 모두 json 형식으로 입력해야 함.

<aside> 💡 Basic 라이센스 이상에서는 표준 SQL 문으로 사용 가능한 Elasticsearch SQL 기능을 지원.

</aside>

풀 텍스트 쿼리 - Full Text Query

// 테스트를 위한 bulk insert
POST my_index/_bulk
{"index":{"_id":1}}
{"message":"The quick brown fox"}
{"index":{"_id":2}}
{"message":"The quick brown fox jumps over the lazy dog"}
{"index":{"_id":3}}
{"message":"The quick brown fox jumps over the quick dog"}
{"index":{"_id":4}}
{"message":"Brown fox brown dog"}
{"index":{"_id":5}}
{"message":"Lazy jumping dog"}

match_all

동일한 쿼리

GET my_index/_search
GET my_index/_search
{
  "query":{
    "match_all":{ }
  }
}

match

풀 텍스트 검색에 사용되는 가장 일반적인 쿼리. my_index의 message 필드에 dog가 포함되어 있는 모든 문서를 검색.

GET my_index/_search
{
  "query": {
    "match": {
      "message": "dog"
    }
  }
}