Elasticsearch 쿼리 구문 및 실제 전투에 대한 심층 연구

WBOY
풀어 주다: 2023-10-03 09:18:02
원래의
804명이 탐색했습니다.

深入学习 Elasticsearch 查询语法与实战

Elasticsearch 쿼리 구문 및 실습에 대한 심층 연구

소개:
Elasticsearch는 Lucene 기반의 오픈 소스 검색 엔진으로 주로 분산 검색 및 분석에 사용되며 전체 텍스트 검색, 로그 분석, 대규모 데이터 시스템 및 기타 시나리오 추천. 데이터 쿼리에 Elasticsearch를 사용할 때 쿼리 구문을 유연하게 사용하는 것이 쿼리 효율성을 높이는 열쇠입니다. 이 문서에서는 Elasticsearch 쿼리 구문을 자세히 살펴보고 실제 사례를 기반으로 자세한 코드 예제를 제공합니다.

1. 개요
Elasticsearch의 쿼리 구문은 주로 쿼리 문, 필터 조건, 정렬, 페이징 및 기타 기능을 포함하는 JSON 형식을 사용합니다. 이러한 구문을 유연하게 결합하면 다양하고 복잡한 데이터 쿼리를 구현할 수 있습니다.

2. 쿼리문

  1. 일치 쿼리:
    일치 쿼리는 키워드를 기반으로 지정된 필드의 쿼리 결과를 일치시키는 가장 기본적인 전체 텍스트 쿼리입니다. 샘플 코드는 다음과 같습니다.

    GET /index/_search
    {
      "query": {
     "match": {
       "field": "keyword"
     }
      }
    }
    로그인 후 복사
  2. 용어 쿼리:
    용어 쿼리는 지정된 필드의 값을 정확하게 일치시키는 데 사용됩니다. 샘플 코드는 다음과 같습니다.

    GET /index/_search
    {
      "query": {
     "term": {
       "field": "value"
     }
      }
    }
    로그인 후 복사
  3. Range 쿼리:
    Range 쿼리는 지정된 필드 범위 내의 값을 쿼리하는 데 사용됩니다. 샘플 코드는 다음과 같습니다.

    GET /index/_search
    {
      "query": {
     "range": {
       "field": {
         "gte": "start value",
         "lte": "end value"
       }
     }
      }
    }
    로그인 후 복사
  4. Bool 쿼리:
    Bool 쿼리는 여러 쿼리 조건을 결합하는 데 사용되며 must, must_not, should 등과 같은 논리적 관계를 지원합니다. 샘플 코드는 다음과 같습니다.

    GET /index/_search
    {
      "query": {
     "bool": {
       "must": [
         { "match": { "field1": "value1" } },
         { "match": { "field2": "value2" } }
       ],
       "must_not": { "term": { "field3": "value3" } },
       "should": { "term": { "field4": "value4" } }
     }
      }
    }
    로그인 후 복사

3. 필터 조건
필터 조건은 쿼리 결과의 범위를 제한하고 불필요한 계산을 줄이기 위해 사용됩니다. 일반적으로 사용되는 필터 조건은 다음과 같습니다.

  1. 용어 필터: 필드의 정확한 값을 기반으로 하는 필터입니다.
  2. 범위 필터: 필드 범위를 기준으로 필터링합니다.
  3. 존재 필터: 필드 존재 여부를 기준으로 필터링합니다.
  4. 부울 필터: 여러 필터 조건을 결합합니다.

4. 정렬
쿼리 결과에서 지정된 필드의 값을 기준으로 정렬할 수 있습니다. 일반적으로 사용되는 정렬 방법은 다음과 같습니다.

  1. 필드 정렬: 지정된 필드의 값에 따라 정렬합니다.
  2. 점수 정렬: 관련성에 따라 문서를 정렬합니다.

5. 페이징
한 번에 너무 많은 데이터가 반환되는 것을 방지하기 위해 쿼리 결과에 페이지를 매길 수 있습니다. 일반적으로 사용되는 페이징 방법은 다음과 같습니다.

  1. From/Size 페이징: from 및 size 매개변수를 통해 반환된 결과의 시작 위치와 수량을 지정합니다.
  2. 스크롤 페이징: 페이징에 스크롤 API를 사용합니다.

6. 실제 사례
다음은 데이터 쿼리에 Elasticsearch의 쿼리 구문을 사용하는 방법을 보여주는 실제 사례입니다.

사례: 전자상거래 사이트에서 상품 키워드를 검색하고 판매량과 가격을 기준으로 정렬합니다.

GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "手机" } }
      ]
    }
  },
  "sort": [
    { "sales": "desc" },
    { "price": "asc" }
  ]
}
로그인 후 복사

위 쿼리에서는 부울 쿼리에 match 문을 사용하여 제품명에 "휴대폰"이 포함된 제품을 검색하고, sort 매개변수를 사용하여 판매량 내림차순, 가격 오름차순으로 정렬했습니다.

결론:
이 기사에서는 Elasticsearch의 쿼리 구문에 대한 심층적인 연구를 제공하고 실제 사례를 통해 자세한 코드 예제를 제공합니다. 이러한 쿼리 구문을 유연하게 사용하면 데이터 쿼리의 효율성과 정확성이 향상될 수 있습니다. 실제 프로젝트에서는 다양한 데이터 쿼리 시나리오를 충족하기 위해 특정 요구 사항에 따라 다양한 쿼리 구문을 조합하여 사용할 수 있습니다.

위 내용은 Elasticsearch 쿼리 구문 및 실제 전투에 대한 심층 연구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!