Elasticsearch는 사용자가 여러가지 검색 조건들에 대해 목표로 하는 검색 기능을 구현할 수 있도록 다양한 기능들을 제공. 데이터를 실제로 검색에 사용되는 검색어인 텀(Term)으로 분석 과정을 거쳐 저장하기 때문에 검색 시 대소문자, 단수나 복수, 원형 여부와 상관 없이 검색이 가능.
이러한 Elasticsearch의 특징을 풀 텍스트 검색(Full Text Search)라고 하며, 한국어로 전문 검색 이라고 함.
검색을 위한 쿼리 기능을 제공하며, 이런 쿼리 기능을 Query DSL(Domain Specific Language) 이라고 얘기하며, 모두 json 형식으로 입력해야 함.
<aside> 💡 Basic 라이센스 이상에서는 표준 SQL 문으로 사용 가능한 Elasticsearch SQL 기능을 지원.
</aside>
// 테스트를 위한 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"}
동일한 쿼리
GET my_index/_search
GET my_index/_search
{
"query":{
"match_all":{ }
}
}
풀 텍스트 검색에 사용되는 가장 일반적인 쿼리. my_index의 message 필드에 dog가 포함되어 있는 모든 문서를 검색.
GET my_index/_search
{
"query": {
"match": {
"message": "dog"
}
}
}