Elasticsearch

Elasticsearch - 검색(Search) #1

Namiz_IT 2024. 9. 3. 16:21
반응형

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"
              }
            }
          }
        }
  • 결과 필터링 (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": {}
        }
      }
  • 하이라이팅 (Highlighting) :
    • 검색 결과에서 일치하는 부분을 강조 표시하기 위해 highlight 옵션을 사용할 수 있다.
      GET /my_index/_search
      {
        "query": {
          "match": {
            "content": "Elasticsearch"
          }
        },
        "highlight": {
          "fields": {
            "content": {}
          }
        }
      }
  • 집계 (Aggregations) :
    • aggregations 또는 aggs를 사용해 검색된 데이터의 요약 정보를 생성할 수 있다. 예를 들어, 통계, 합계, 평균 등을 계산할 수 있다.
      GET /my_index/_search
      {
        "size": 0,
        "aggs": {
          "status_count": {
            "terms": {
              "field": "status"
            }
          }
        }
      }
  • 멀티 서치 (Multi Search) :
    • _msearch 엔드포인트를 통해 여러 쿼리를 한 번에 실행할 수 있다.
      POST /my_index/_msearch
      {}
      { "query": { "match": { "title": "Elasticsearch" } } }
      {}
      { "query": { "term": { "status": "active" } } }

참조

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-with-elasticsearch.html

 

Search your data | Elasticsearch Guide [8.15] | Elastic

A search query, or query, is a request for information about data in Elasticsearch data streams or indices. You can think of a query as a question, written in a way Elasticsearch understands. Depending on your data, you can use a query to get answers to qu

www.elastic.co

 

반응형

'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