0
0
Posts
Admin Team
Admin Teamtechmely

Hướng Dẫn Tìm Kiếm Hiệu Quả Trong Elasticsearch

Đăng vào 2 ngày trước

• 4 phút đọc

Chủ đề:

Elasticsearch

Hướng Dẫn Tìm Kiếm Hiệu Quả Trong Elasticsearch

Chúng ta đã tìm hiểu về cách tạo indices, xác định mapping types, và thêm documents. Tuy nhiên, phần quan trọng và thú vị nhất của Elasticsearch chính là khả năng tìm kiếm. Trong bài viết này, chúng ta sẽ khám phá cách thực hiện tìm kiếm hiệu quả trong Elasticsearch.

Nhập Dữ Liệu Vào Elasticsearch

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã có dữ liệu trong cluster của bạn. Bạn có thể tải thêm dữ liệu bằng Bulk Document API từ tệp books-and-authors-bulk.json:

Copy
$ http POST https://localhost:9200/_bulk < books-and-authors-bulk.json

Tìm Kiếm Đơn Giản Với Query String

Khi đã có dữ liệu, chúng ta có thể thực hiện các truy vấn tìm kiếm cơ bản bằng cách sử dụng Search API. Bạn có thể gửi tham số truy vấn qua query string trên URI.
Ví dụ, nếu bạn muốn tìm kiếm từ khóa "engine" (liên quan đến cụm từ search engine), bạn có thể thực hiện truy vấn sau:

Copy
$ http POST https://localhost:9200/catalog/books/_search?q=engine

Kết Quả Trả Về

Dưới đây là kết quả rút gọn mà bạn có thể nhận được:

Copy
{
  "_shards": {
    "failed": 0,
    "successful": 5,
    "total": 5
  },
  "hits": {
    "total": 1,
    "max_score": 0.7503276,
    "hits": [
      {
        "_index": "catalog",
        "_type": "books",
        "_id": "978-1449358549",
        "_score": 0.7503276,
        "_source": {
          "title": "Elasticsearch: The Definitive Guide.",
          "categories": [
            { "name": "analytics" },
            { "name": "search" },
            { "name": "database store" }
          ],
          "publisher": "O’Reilly",
          "published_date": "2015-02-07",
          "isbn": "978-1449358549",
          "rating": 4
        }
      }
    ]
  },
  "timed_out": false,
  "took": 22
}

Query String Search API rất tiện lợi cho các tìm kiếm nhanh chóng, nhưng có những hạn chế nếu bạn cần thực hiện các truy vấn nâng cao hơn. Đó là lý do Request Body Search API trở thành một lựa chọn mạnh mẽ hơn.

Tìm Kiếm Bằng Request Body Search API

Thay vì gửi truy vấn qua query string, bạn có thể sử dụng JSON-based Query DSL để xây dựng các truy vấn phức tạp một cách dễ dàng hơn. Có rất nhiều loại queryQuery DSL hỗ trợ, mỗi loại đều có cú pháp và tham số riêng. Một số tham số quan trọng mà bạn có thể sử dụng bao gồm:

  • sort: Sắp xếp kết quả
  • from: Bỏ qua một số kết quả đầu tiên
  • size: Giới hạn số lượng kết quả trả về
  • stored_fields: Chỉ định các trường cần lấy về

Ví Dụ Về Query

Dưới đây là một truy vấn đơn giản sử dụng match_all query, cho phép bạn tìm tất cả các tài liệu trong books index:

Copy
$ curl -i https://localhost:9200/catalog/books/_search?pretty -d '
{
  "size": 10,
  "query": {
    "match_all": {}
  }
}'

Kết Quả Trả Về

Kết quả trả về có thể hiện như sau:

Copy
{
  "took": 13,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1.0,
    "hits": [
      {
        "_index": "catalog",
        "_type": "books",
        "_id": "978-1449358549",
        "_score": 1.0,
        "_source": {
          "title": "Elasticsearch: The Definitive Guide.",
          "publisher": "O’Reilly"
        }
      }
    ]
  }
}

match_all query không lọc các tài liệu, nhưng nó rất hữu ích khi bạn muốn kiểm tra số lượng tài liệu trong một index.

Kết Luận

Trong bài viết này, bạn đã có cái nhìn tổng quan về cách thực hiện tìm kiếm hiệu quả trong Elasticsearch. Ở các phần tiếp theo, chúng ta sẽ khám phá sâu hơn về Query DSL và học cách sử dụng các loại query nâng cao giúp tăng cường độ chính xác của kết quả tìm kiếm. Hãy theo dõi để không bỏ lỡ những thông tin hữu ích này! 🚀

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào