Elasticsearch – P3: Querying và Searching

2 min read

Giới thiệu

Trong phần trước, chúng ta đã tìm hiểu cách cài đặt và cấu hình Elasticsearch. Ở phần này, chúng ta sẽ đi sâu vào querying và searching trong Elasticsearch. Đây là một trong những tính năng mạnh mẽ nhất của Elasticsearch, giúp bạn dễ dàng truy vấn và tìm kiếm dữ liệu.

Meta Description

Tìm hiểu về querying và searching trong Elasticsearch. Hướng dẫn chi tiết về cách sử dụng các câu truy vấn để tìm kiếm dữ liệu một cách hiệu quả.

Keywords

  • querying trong Elasticsearch
  • searching trong Elasticsearch
  • Elasticsearch query
  • Elasticsearch search
  • hướng dẫn Elasticsearch

1. Querying và Searching là gì?

Querying và searching là hai khái niệm quan trọng trong Elasticsearch. Querying đề cập đến việc truy vấn dữ liệu từ index của Elasticsearch, trong khi searching liên quan đến việc tìm kiếm thông tin cụ thể trong dữ liệu đã được index.

2. Các loại Query trong Elasticsearch

Elasticsearch hỗ trợ nhiều loại query khác nhau để đáp ứng các nhu cầu tìm kiếm khác nhau:

2.1. Match Query

Match Query là loại truy vấn cơ bản nhất trong Elasticsearch, được sử dụng để tìm kiếm các tài liệu mà trường nào đó khớp với một từ hoặc cụm từ nhất định.

Ví dụ:

{
  "query": {
    "match": {
      "message": "Elasticsearch"
    }
  }
}

2.2. Term Query

Term Query được sử dụng để tìm kiếm các tài liệu chứa chính xác một giá trị cụ thể trong một trường.

Ví dụ:

{
  "query": {
    "term": {
      "status": "active"
    }
  }
}

2.3. Range Query

Range Query cho phép bạn tìm kiếm các tài liệu có giá trị trong một khoảng nhất định.

Ví dụ:

{
  "query": {
    "range": {
      "age": {
        "gte": 30,
        "lte": 40
      }
    }
  }
}

2.4. Bool Query

Bool Query cho phép bạn kết hợp nhiều query khác nhau bằng các toán tử logic như must, should và must_not.

Ví dụ:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Elasticsearch" } },
        { "range": { "publish_date": { "gte": "2023-01-01" } } }
      ],
      "must_not": [
        { "term": { "status": "inactive" } }
      ],
      "should": [
        { "term": { "category": "tutorial" } }
      ]
    }
  }
}

3. Sử dụng Elasticsearch DSL để xây dựng Query

Elasticsearch cung cấp DSL (Domain Specific Language) giúp bạn dễ dàng xây dựng các truy vấn phức tạp.

Ví dụ:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "content": "search" } }
      ],
      "filter": [
        { "term": { "status": "published" } }
      ]
    }
  }
}

4. Tìm hiểu về Aggregations

Aggregations là công cụ mạnh mẽ trong Elasticsearch để tính toán và tổng hợp dữ liệu.

4.1. Metric Aggregations

Metric Aggregations cho phép bạn tính toán các giá trị số như sum, avg, min, max.

Ví dụ:

{
  "aggs": {
    "average_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}

4.2. Bucket Aggregations

Bucket Aggregations nhóm các tài liệu vào các nhóm (buckets) dựa trên các giá trị trường cụ thể.

Ví dụ:

{
  "aggs": {
    "age_groups": {
      "range": {
        "field": "age",
        "ranges": [
          { "to": 30 },
          { "from": 30, "to": 50 },
          { "from": 50 }
        ]
      }
    }
  }
}

5. Xử lý kết quả truy vấn

Khi bạn thực hiện một truy vấn, Elasticsearch sẽ trả về các tài liệu phù hợp cùng với thông tin về score (điểm phù hợp của tài liệu).

Ví dụ:

{
  "hits": {
    "total": 100,
    "hits": [
      {
        "_source": {
          "title": "Learn Elasticsearch",
          "content": "Elasticsearch is a powerful search engine..."
        },
        "_score": 1.0
      }
    ]
  }
}

6. Kết Luận

Trong phần này, chúng ta đã tìm hiểu về querying và searching trong Elasticsearch. Hi vọng bài viết đã giúp bạn hiểu rõ hơn về cách xây dựng và sử dụng các truy vấn để tìm kiếm dữ liệu hiệu quả. Trong phần tiếp theo, chúng ta sẽ tìm hiểu về cách quản lý và tối ưu hóa hiệu suất của Elasticsearch. Hãy đón xem nhé!

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *