반응형
Elasticsearch 검색 소개
검색 쿼리 또는 쿼리 는 Elasticsearch 데이터 스트림이나 인덱스에 있는 데이터에 대한 정보에 대한 요청이다.
쿼리는 Elasticsearch가 이해하는 방식으로 작성된 질문이라고 생각할 수 있다. 데이터에 따라 쿼리를 사용하여 다음과 같은 질문에 대한 답을 얻을 수 있다.
- 내 서버에서 어떤 프로세스가 응답하는 데 500밀리초 이상 걸리나요?
- regsvr32.exe지난주에 내 네트워크에서 어떤 사용자가 앱을 사용했습니까 ?
- 내 웹사이트의 어떤 페이지에 특정 단어나 문구가 포함되어 있습니까?
Elasticearch 검색 사례
- 정확한 값 검색 : 숫자, 날짜, IP 또는 문자열의 정확한 값이나 범위를 검색한다.
- 전체 텍스트 검색 : 전체 텍스트 쿼리를 사용하여 구조화되지 않은 텍스트 데이터를 쿼리 하고 쿼리 용어와 가장 잘 일치하는 문서를 찾는다.
- 벡터 검색 : Elasticsearch에 벡터를 저장하고 근사 최근접 이웃(ANN) 또는 k-최근접 이웃(KNN) 검색을 사용하여 유사한 벡터를 찾으며 의미 검색과 같은 사용 사례를 지원한다.
반응형
일반 검색
- 기본 검색 (Basic Search) :
- GET /index_name/_search를 사용해 특정 인덱스에서 데이터를 검색할 수 있다.
- 쿼리를 명시하지 않으면 기본적으로 전체 문서가 반환된다.
GET /my_index/_search { "query": { "match_all": {} } }
- 쿼리 (Query) :
- 쿼리는 JSON 형식으로 작성되며, 다양한 검색 옵션을 제공한다.
- query 파라미터 안에 쿼리를 정의합니다. 예를 들어, match, term, range 쿼리를 사용해 특정 조건을 지정할 수 있다.
- Match 쿼리 : 특정 필드에서 텍스트를 검색한다.
GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } }
- Term 쿼리 : 정확한 값을 검색한다.
GET /my_index/_search { "query": { "term": { "status": "active" } } }
- Range 쿼리 : 숫자, 날짜 또는 텍스트의 범위를 검색한다.
GET /my_index/_search { "query": { "range": { "date": { "gte": "2023-01-01", "lte": "2023-12-31" } } } }
- Match 쿼리 : 특정 필드에서 텍스트를 검색한다.
- 결과 필터링 (Filtering Results) :
- _source 필드를 사용해 반환될 필드들을 선택하거나 제외할 수 있다.
- from과 size 파라미터로 페이징(pagination)을 관리할 수 있다.
- 특정 필드만 반환
GET /my_index/_search { "_source": ["title", "date"], "query": { "match_all": {} } }
- 페이징 (첫 번째 10개 결과)
GET /my_index/_search { "from": 0, "size": 10, "query": { "match_all": {} } }
- 특정 필드만 반환
- 정렬 (Sorting) :
- sort 파라미터를 사용해 검색 결과를 정렬할 수 있다. 예를 들어, 특정 필드를 기준으로 오름차순 또는 내림차순 정렬이 가능하다.
GET /my_index/_search { "sort": [ { "date": "desc" } ], "query": { "match_all": {} } }
- sort 파라미터를 사용해 검색 결과를 정렬할 수 있다. 예를 들어, 특정 필드를 기준으로 오름차순 또는 내림차순 정렬이 가능하다.
- 하이라이팅 (Highlighting) :
- 검색 결과에서 일치하는 부분을 강조 표시하기 위해 highlight 옵션을 사용할 수 있다.
GET /my_index/_search { "query": { "match": { "content": "Elasticsearch" } }, "highlight": { "fields": { "content": {} } } }
- 검색 결과에서 일치하는 부분을 강조 표시하기 위해 highlight 옵션을 사용할 수 있다.
- 집계 (Aggregations) :
- aggregations 또는 aggs를 사용해 검색된 데이터의 요약 정보를 생성할 수 있다. 예를 들어, 통계, 합계, 평균 등을 계산할 수 있다.
GET /my_index/_search { "size": 0, "aggs": { "status_count": { "terms": { "field": "status" } } } }
- aggregations 또는 aggs를 사용해 검색된 데이터의 요약 정보를 생성할 수 있다. 예를 들어, 통계, 합계, 평균 등을 계산할 수 있다.
- 멀티 서치 (Multi Search) :
- _msearch 엔드포인트를 통해 여러 쿼리를 한 번에 실행할 수 있다.
POST /my_index/_msearch {} { "query": { "match": { "title": "Elasticsearch" } } } {} { "query": { "term": { "status": "active" } } }
- _msearch 엔드포인트를 통해 여러 쿼리를 한 번에 실행할 수 있다.
참조
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-with-elasticsearch.html
반응형
'Elasticsearch' 카테고리의 다른 글
Elasticsearch - 검색(Search) #2 (0) | 2024.09.04 |
---|---|
Elasticsearch - 매핑(Mapping) (0) | 2024.09.03 |
Kibana란 무엇인가? (0) | 2024.08.27 |
Elasticsearch 주요 개념 요약 (0) | 2024.08.27 |
Elasticsearch란 무엇인가? (0) | 2024.08.27 |