-
[엘라스틱 서치] Search your data - 검색 API (1)ElasticSearch 2024. 4. 24. 17:13
이 시리즈에서는 엘라스틱서치 가이드(:8.13) 의 Search your data 챕터에 대해 다루고 있습니다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
search query란 ?
Elasticsearch에서 인덱스 데이터에 대한 정보를 요청하는 작업
검색 쿼리의 종류 :
Search for exact values
- 정확한 값이나 범위 검색
Full-text search
- 쿼리 용어와 가장 유사한/일치하는 문서 탐색
- 비정형 텍스트 데이터를 탐색하는데 사용
Vector search
- ANN, kNN등을 사용하여 유사한 "의미"를 검색
검색 API의 활용
- Elasticsearch에서 저장된 데이터를 검색하거나 집계 할 수 있다.
- 검색 기반 애플리케이션을 구축할 수 있다.
Elasticsearch는 검색API 방식의 쿼리를 허용하고 있습니다.
또한 API의 요청 본문은 Query DSL 으로 작성됩니다.
API 예시
`match` 쿼리는 특정 필드, 값을 통해 검색할 수 있게 합니다.
GET /my-index-000001/_search { "query": { "match": { "user.id": "kimchy" } } }
이 외에도 텍스트 쿼리, 복합 쿼리, 집계 등등을 활용해 다양한 통계 및 분석 결과를 얻을 수 있습니다.
기본적으로 검색 요청은 time out 되지 않습니다. 일반적인 요청은 응답을 반환하기 전, 각 샤드의 결과가 완료될때까지 기다리게 됩니다.
이와 반대로 비동기 검색은 매개변수를 사용해 각 샤드가 완료될 때까지 기다리는 기간을 지정할 수도 있습니다.
이 경우 Elasticsearch는 해당 시점까지 누적된 데이터만 응답합니다.
총 hit 추적
Elasticsearch7 부터는 결과 개수가 10,000개 이상일때, 정확한 개수를 얻기 위해 track_total_hits를 사용합니다.
쿼리에 track_total_hits라는 파라미터를 넣어 총 히트 수를 정확하게 계산할 수 있습니다.
true로 설정 시 : 쿼리와 정확하게 일치하는 히트수를 추적합니다.
false : "gte" 등 디폴트 (10,000)개 보다 hit가 많은지, 적은지의 관계를 알려줍니다. 쿼리 속도의 향상을 기대할 수 있습니다.
일치하는 문서의 빠른 확인
특정 쿼리와 일치하는 문서의 정보가 아닌 해당 문서의 유무만 알고싶다면, size를 0으로 설정함으로써 빠르게 확인할 수 있습니다.
또는 일치하는 문서를 처음 발견시 쿼리 실행이 종료되도록 terminate_after=1을 설정할 수도 있습니다.took : 검색하는데 걸린 시간 (단위: ms)
{ "took": 3, //응답시간(수신~반환까지) "timed_out": false, //정상 응답됨 "terminated_early": true, //쿼리가 일찍 종료됨 "_shards": { "total": 1, "successful": 1, "skipped" : 0, "failed": 0 }, "hits": { "total" : { "value": 1, //쿼리가 일찍 종료되었을 때 일치하는 문서가 적어도 0보다 많다는 의미 "relation": "eq" }, "max_score": null, //score, hits는 size=0이므로 나타나지 않는다. "hits": [] } }
'ElasticSearch' 카테고리의 다른 글
[엘라스틱 서치] Aliasese (0) 2024.05.07 [엘라스틱 서치] Search your data - 검색 API (5) (0) 2024.05.07 [엘라스틱 서치] Search your data - 검색 API (4) (0) 2024.04.30 [엘라스틱 서치] Search your data - 검색 API (3) (0) 2024.04.29 [엘라스틱 서치] Search your data - 검색 API (2) (0) 2024.04.25