Bạn đang chuẩn bị ứng tuyển một vị trí yêu cầu kiến thức về Elasticsearch? Bài viết này chính là “tuyệt chiêu” chinh phục nhà tuyển dụng với bộ câu hỏi phỏng vấn Elasticsearch theo từng cấp độ. Từ những kiến thức nền tảng đến kỹ năng xử lý truy vấn phức tạp, ITviec sẽ giúp bạn tự tin nắm bắt cơ hội sự nghiệp trong lĩnh vực dữ liệu. Bài viết cũng là nguồn tài liệu tham khảo hữu ích cho những ai muốn nâng cao kiến thức về Elasticsearch.

Đọc bài viết để hiểu hơn về:

  • Những người cần nắm vững các câu hỏi phỏng vấn Elasticsearch;
  • Các câu hỏi phỏng vấn Elasticsearch cơ bản;
  • Các câu hỏi phỏng vấn Elasticsearch cấp trung;
  • Các câu hỏi phỏng vấn Elasticsearch cấp cao.

Ai cần nắm vững các câu hỏi phỏng vấn Elasticsearch?

Các vị trí cần trau dồi kiến thức câu hỏi phỏng vấn Elasticsearch bao gồm:

  • Data Analyst: Giúp truy xuất và xử lý dữ liệu hiệu quả, cho phép thực hiện các truy vấn tìm kiếm nâng cao, thực hiện tổng hợp và rút ra hiểu biết có ý nghĩa từ các tập dữ liệu lớn.
  • Data Scientist: Dựa vào khả năng tìm kiếm mạnh mẽ của Elasticsearch để khám phá và phân tích dữ liệu, thực hiện các truy vấn phức tạp, tận dụng tổng hợp để phân tích thống kê và xây dựng các công cụ tìm kiếm hiệu quả cho các hệ thống đề xuất.
  • Data Engineer: Kiến trúc phân tán và khả năng tìm kiếm toàn văn bản của Elasticsearch khiến đây trở thành công cụ có giá trị để tối ưu hóa hiệu suất lập index dữ liệu và truy vấn.
  • Analytics Engineer: Chuyên môn của Analytics Engineer về Elasticsearch cho phép bạn thiết kế, xây dựng và quản lý hiệu quả các Elasticsearch cluster, đảm bảo hiệu suất và khả năng mở rộng tối ưu cho việc khám phá và phân tích dữ liệu.
  • AI Engineer: Tận dụng Elasticsearch để tăng cường khả năng truy xuất thông tin, thực hiện tìm kiếm ngữ nghĩa và tạo ra các chatbot thông minh hoặc trợ lý ảo, giúp xây dựng hệ thống thông minh đòi hỏi chức năng tìm kiếm phức tạp.
  • Data Architect: Sự thành thạo trong Elasticsearch cho phép bạn kết hợp Elasticsearch như một thành phần cốt lõi để tăng khả năng tìm kiếm hiệu quả và khám phá dữ liệu trong các giải pháp kiến ​​trúc.
  • GIS Data Analyst: Các tính năng không gian địa lý của Elasticsearch giúp phân tích và truy vấn dữ liệu định vị địa lý. Bạn có thể tận dụng các chức năng này để thực hiện tìm kiếm không gian địa lý, phân tích vị trí gần và trực quan hóa trên các tập dữ liệu không gian.
  • Machine Learning Engineer: Sử dụng Elasticsearch để lưu trữ và tìm kiếm các tập dữ liệu lớn nhằm đào tạo và triển khai các mô hình học máy. Khả năng mở rộng và tìm kiếm hiệu quả của Elasticsearch sẽ là công cụ giá trị để quản lý và xử lý dữ liệu đào tạo.

Đọc thêm: AI Engineer vs Data Scientist: Phân biệt qua 4 điểm quan trọng

Các câu hỏi phỏng vấn Elasticsearch cơ bản

Elasticsearch hoạt động như thế nào?

Elasticsearch sử dụng Apache Lucene làm nền tảng bên dưới để lập index và tìm kiếm dữ liệu. Dữ liệu khi được tiếp nhận sẽ được phân tích, chuẩn hóa và lưu trữ trong các cấu trúc inverted index, cho phép tìm kiếm nhanh chóng.

  • Đầu tiên, dữ liệu thô được thu thập từ nhiều nguồn khác nhau, chẳng hạn như tệp nhật ký, số liệu hệ thống hoặc ứng dụng web. Beats là các tác nhân vận chuyển dữ liệu nhẹ (data shipper) thu thập các loại dữ liệu khác nhau và chuyển tiếp đến Logstash.
  • Dữ liệu thô này được chuẩn hóa, phân tích và làm giàu dữ liệu trước khi được lập index trong Elasticsearch. Logstash thực hiện một số chuyển đổi và cải tiến, sau đó gửi dữ liệu để lập index trong Elasticsearch.
  • Ngay sau khi dữ liệu được lập index, người dùng có thể chạy truy vấn trên dữ liệu đó, sau đó tổng hợp để tạo ra thông tin chi tiết. Elasticsearch cho phép bạn lưu trữ, tìm kiếm và phân tích lượng dữ liệu khổng lồ hoặc cực lớn gần như theo thời gian thực, cung cấp kết quả trong mili giây.
  • Cuối cùng, từ Kibana, người dùng có thể tạo ra hình ảnh trực quan mạnh mẽ về dữ liệu và hình ảnh hóa các truy vấn phức tạp thông qua sơ đồ tương tác, dữ liệu không gian địa lý và đồ thị.

Đọc thêm: Từ A đến Z về Elasticsearch: “Vũ khí” bí mật cho các ứng dụng dữ liệu lớn

Elasticsearch được sử dụng làm gì, kiến trúc cơ bản của Elasticsearch như thế nào?

Kiến trúc cơ bản của Elasticsearch bao gồm các node, tạo thành các cluster và phân phối dữ liệu trên các shard để có khả năng mở rộng và phục hồi. Elasticsearch sử dụng cấu trúc inverted index để truy xuất dữ liệu hiệu quả. Elasticsearch là một cơ sở dữ liệu phân tán, điều này có nghĩa là các index được chia thành các shard và được phân phối trên nhiều node trong một cluster. Mỗi node chứa một phần của dữ liệu, cho phép xử lý song song và cung cấp khả năng mở rộng theo chiều ngang.

Elasticsearch được sử dụng trong một số trường hợp như:

  • Tìm kiếm toàn văn: Elasticsearch giúp các truy vấn tìm kiếm phức tạp trở nên dễ dàng hơn bằng cách tìm kiếm nhanh chóng trên các tập dữ liệu lớn. Tính năng này đặc biệt hữu ích cho các trang web, ứng dụng hoặc doanh nghiệp yêu cầu kết quả tìm kiếm tức thời.
  • Phân tích dữ liệu nhật ký và sự kiện: Elasticsearch giúp phân tích nhanh dữ liệu nhật ký, sự kiện hệ thống và sự kiện ứng dụng, cải thiện khả năng giám sát hệ thống và xác định sự cố.
  • Phát hiện bất thường: Phát hiện các mô hình bất thường, chẳng hạn như hoạt động gian lận, tấn công mạng hoặc sự cố hiệu suất, bằng cách phân tích dữ liệu được lưu trữ theo thời gian thực.
  • Trực quan hóa dữ liệu: Elasticsearch có thể kết hợp với các công cụ khác như Kibana để tạo trực quan hóa dữ liệu tương tác. Điều này giúp khám phá, hiểu và sử dụng dữ liệu hiệu quả dễ dàng hơn.
  • Theo dõi số liệu và hiệu suất: Elasticsearch giúp thu thập, phân tích và trực quan hóa các số liệu hiệu suất như thời gian phản hồi và tải hệ thống, hỗ trợ tối ưu hóa hệ thống và lập kế hoạch năng lực.
  • Tự động hoàn thành và sửa lỗi chính tả: Elasticsearch có thể cung cấp tính năng tự động hoàn thành và sửa lỗi chính tả theo thời gian thực trong khi người dùng tìm kiếm, nâng cao trải nghiệm của người dùng và giúp tìm kiếm hiệu quả hơn.
  • Tìm kiếm theo không gian địa lý: Elasticsearch hỗ trợ tìm kiếm và lọc dữ liệu dựa trên vị trí địa lý, cho phép tìm kiếm theo khoảng cách và phân tích theo vị trí.

Đọc thêm: Elasticsearch tutorial: Chi tiết cách sử dụng Elasticsearch cơ bản

Làm thế nào để tạo, xóa, liệt kê và truy vấn Index trong Elasticsearch?

Lệnh tạo index mới:

PUT /test_index?pretty

Lệnh xóa index:

DELETE /test_index?pretty

Lệnh liệt kê tất cả tên index và thông tin cơ bản của chúng:

GET _cat/indices?v

Lệnh truy vấn một index:

GET test_index/_search

Lệnh truy vấn nhiều index:

GET test_index1, test_index2/_search

Đọc thêm: Elasticsearch Query: Khám phá bí kíp tìm kiếm dữ liệu siêu tốc

Làm thế nào để thêm ánh xạ vào index?

Elasticsearch cho phép bạn thêm ánh xạ vào một index dựa trên dữ liệu do người dùng cung cấp trong nội dung yêu cầu. Cú pháp như sau: 

PUT /<index_name>/_mapping
{
"properties": {
"field_name": { "type": "text" }
}
}

ElasticSearch Mapping là gì?

Elasticsearch Mapping là quá trình xác định cách lưu trữ và lập index các tài liệu và trường của chúng trong Elasticsearch index. Mapping bao gồm việc thiết lập các kiểu dữ liệu (ví dụ: văn bản, từ khóa, ngày) và cấu hình các trình phân tích.

Ví dụ:

{
  "mappings": {
"properties": {
   "title": { "type": "text" },
   "date": { "type": "date" },
   "views": { "type": "integer" }
}
  }
}

Giải thích các thuật ngữ Shard và Replica trong Elasticsearch

Khái niệm Shard

Elasticsearch thường bị sập do các index lớn. Do số lượng tài liệu không giới hạn được lưu trữ trên mỗi index, một index có thể chiếm nhiều dung lượng đĩa hơn so với khả năng lưu trữ của máy chủ. Việc lập index sẽ bắt đầu bị lỗi ngay khi index đạt đến giới hạn lưu trữ. 

Để giải quyết vấn đề này, có thể chia hoặc phân đoạn các index theo chiều ngang thành nhiều phần, được gọi là shard. Đối với một index, bạn có thể dễ dàng chỉ định số lượng shard mà bạn muốn. Do đó, mỗi shard là “index” riêng với đầy đủ chức năng và hoạt động độc lập, có thể chạy trên bất kỳ node nào trong cluster.

Khái niệm Replica

Replica (bản sao) là cơ chế an toàn lỗi của Elasticsearch, bản sao các shard của index. Replica có thể hữu ích khi một node gặp sự cố. Hơn nữa, replica có thể phục vụ các yêu cầu đọc, điều này hữu ích để tăng hiệu suất tìm kiếm. Để đảm bảo tính khả dụng cao, replica  không được đặt trên cùng một node với shard gốc mà chúng được sao lưu.

Giải thích các thuật ngữ Document và Cluster trong Elasticsearch

Cluster là tập hợp các node được kết nối. Nếu bạn chỉ chạy một phiên bản hoặc node của Elasticsearch, bạn sẽ có một node cluster đơn hoặc một cluster gồm một node. Các cluster tự động sắp xếp lại khi các node tham gia hoặc rời đi để dữ liệu được phân phối đều giữa tất cả các node. Mặc dù hoạt động đầy đủ, cluster vẫn có nguy cơ mất dữ liệu nếu xảy ra lỗi.

Một Document (tài liệu) trong Elasticsearch là một đơn vị thông tin cơ bản có thể được lập index, lưu trữ và tìm kiếm. Các tài liệu được thể hiện trong JSON – định dạng mà con người có thể đọc được và máy có thể phân tích được. Mỗi tài liệu bao gồm một tập hợp các trường có giá trị tương ứng, có thể là nhiều kiểu dữ liệu khác nhau như văn bản, số, ngày tháng, vị trí địa lý hoặc giá trị boolean.

Mỗi Document trong Elasticsearch được định danh bằng một ID duy nhất và được lưu trữ trong một index cụ thể. Các Document có thể được cập nhật, truy xuất hoặc xóa bằng cách sử dụng ID của chúng.

Node trong Elasticsearch là gì? Có những loại node nào?

Một node trong Elasticsearch đề cập đến một phiên bản chạy duy nhất của quy trình Elasticsearch trong một cluster. Node được sử dụng để lưu trữ dữ liệu và tham gia vào khả năng lập index cũng như tìm kiếm của cluster. Các node giao tiếp với nhau để phân phối dữ liệu và khối lượng công việc, đảm bảo cluster cân bằng và hiệu suất cao. Các node có thể được cấu hình với vai trò khác nhau trong cluster.

Bằng cách sử dụng các node, Elasticsearch có thể mở rộng quy mô để xử lý lượng lớn dữ liệu và lưu lượng truy cập. Các node được thêm vào cluster khi cần và xóa đi mà không ảnh hưởng đến tính khả dụng của dữ liệu. Do đó, Elasticsearch trở thành giải pháp có khả năng mở rộng và đáng tin cậy cao để lưu trữ và tìm kiếm dữ liệu.

Bạn có thể chỉ định vai trò cho các node bằng cách thiết lập node.roles trong Elasticsearch.yml. Nếu bạn không thiết lập nodes.roles, theo mặc định, các node sẽ được chỉ định các vai trò sau:

  • Master-eligible node: Các node này chịu trách nhiệm cho các hành động trên toàn cluster như tạo hoặc xóa index, quản lý các node và duy trì tình trạng chung của cluster. Chúng tham gia vào quá trình bầu chọn cho một node chủ và một trong số chúng được bầu làm node chủ.
  • Data node: Data node lưu trữ dữ liệu thực tế, được gọi là shard. Chúng thực hiện các hoạt động liên quan đến dữ liệu như lập index, tìm kiếm và tổng hợp. Chúng cũng quản lý việc sao chép dữ liệu để đảm bảo tính khả dụng và khả năng phục hồi cao.
  • Ingest node: Các node này xử lý trước dữ liệu đến trước khi lập index. Chúng sử dụng các ingest pipeline của Elasticsearch để chuyển đổi, làm giàu và lọc dữ liệu khi dữ liệu được thu thập.
  • Coordinating (client) node: Các node này định tuyến yêu cầu tìm kiếm và xử lý kết quả truy vấn. Chúng không lưu trữ dữ liệu hoặc thực hiện xử lý nhập dữ liệu mà hoạt động như bộ cân bằng tải thông minh giúp tối ưu hóa việc phân phối các truy vấn và tổng hợp.
  • Machine learning node: Node chuyên chạy tác vụ học máy trong Elasticsearch, thường được dùng để phát hiện bất thường và phân tích dữ liệu.
  • Cross-cluster search (CCS) node: Các CCS node cho phép truy vấn nhiều Elasticsearch cluster cùng lúc, hoạt động như một điểm duy nhất để thực hiện tìm kiếm liên kết trên các cluster này.
  • Voting-only node: Các node này đủ điều kiện làm node chính nhưng không thể trở thành node chính. Chức năng chính của chúng là “bỏ phiếu” trong “cuộc bầu chọn” node chính, giúp ngăn ngừa tình trạng bỏ phiếu hòa và duy trì tính ổn định của cluster.

Khi thiết lập nodes.roles, hãy kiểm tra chéo xem các node được chỉ định vai trò theo nhu cầu của cluster chưa. Ví dụ, vai trò master và data là bắt buộc đối với mọi cluster.

Các tính năng chính của Query DSL của Elasticsearch là gì?

Các tính năng chính của Query DSL của Elasticsearch bao gồm khả năng tìm kiếm, chẳng hạn như truy vấn toàn văn, truy vấn có cấu trúc và cấu trúc truy vấn phức tạp. Tính linh hoạt này cho phép truy xuất dữ liệu chính xác và hiệu quả.

Fuzzy search trong Elasticsearch là gì?

Với fuzzy search, bạn có thể tìm các tài liệu có thuật ngữ tương tự với thuật ngữ tìm kiếm của mình dựa trên phép đo khoảng cách chỉnh sửa Levenshtein. Khoảng cách chỉnh sửa về cơ bản là số lần thay đổi hoặc chỉnh sửa một ký tự đơn cần thiết để thay đổi một thuật ngữ thành một thuật ngữ khác. Những thay đổi này có thể kể đến:

  • Thay đổi một ký tự (box → fox)
  • Xóa một ký tự (black → lack)
  • Chèn một ký tự (sic → sick)
  • Chuyển vị trí hai ký tự liền kề (act → cat)

Trong phạm vi chỉnh sửa cụ thể, fuzzy search tạo ra danh sách tất cả các biến thể và mở rộng có thể có của thuật ngữ tìm kiếm. Sau đó, truy vấn trả về danh sách tất cả các kết quả khớp. Các kết quả khớp chính xác và có liên quan nhất sẽ xuất hiện gần đầu danh sách.

Liệt kê các kiểu dữ liệu ElasticSearch khác nhau cho các trường tài liệu

Kiểu trường (còn gọi là kiểu dữ liệu trường) mô tả loại thông tin hoặc dữ liệu mà một trường chứa, chẳng hạn như string hoặc boolean và mục đích sử dụng dự kiến ​​của nó. Sau đây là một số kiểu dữ liệu cho trường tài liệu:

Các kiểu dữ liệu phổ biến:

  • Binary: Giá trị nhị phân được mã hóa dưới dạng chuỗi Base64.
  • Boolean: Giá trị đúng hoặc sai.
  • Keyword: Từ khóa, từ khóa hằng và ký tự đại diện.
  • Number: Các kiểu số như long, double, float, byte, integer, v.v.
  • Date: Kiểu ngày, chẳng hạn như date_nano, date.
  • Alias: Biểu thị biệt danh của một trường hiện có.

Đối tượng và kiểu quan hệ:

  • Object: Biểu diễn một đối tượng JSON.
  • Nested: Một đối tượng JSON duy trì mối quan hệ giữa các trường con của nó.
  • Flattened: Toàn bộ đối tượng JSON được biểu diễn bằng một giá trị trường duy nhất.
  • Join: Thiết lập mối quan hệ cha/con giữa các tài liệu trong một index.

Kiểu dữ liệu có cấu trúc và không gian:

  • Range: Các kiểu phạm vi, như date_range, long_range, float_range, double_range và IP_range.
  • Point: Điểm Descartes tùy ý.
  • Geo_point: Điểm kinh độ và vĩ độ
  • Shape: Hình học Descartes tùy ý.
  • Geo_shape: Hình dạng phức tạp như đa giác

Analyzer trong Elasticsearch là gì và chúng đóng vai trò gì?

Trong Elasticsearch, một analyzer là một thành phần được sử dụng để mã hóa văn bản. Trình phân tích analyzer được sử dụng để chia nhỏ văn bản thành các đơn vị nhỏ hơn gọi là mã thông báo. Các mã thông báo này sau đó được sử dụng để lập index và tìm kiếm văn bản. Mục tiêu chính của analyzer là chuyển đổi văn bản thô thành định dạng có cấu trúc (mã thông báo) có thể được tìm kiếm và phân tích hiệu quả.

Một analyzer bao gồm ba thành phần chính:

  • Tokenizer: Công cụ chia nhỏ văn bản đầu vào thành một chuỗi các thuật ngữ (token), thường bằng cách phân tách văn bản theo khoảng trắng hoặc ranh giới dấu câu.
  • Token filter: Bộ lọc token xử lý luồng mã thông báo do trình tạo mã thông báo tạo ra và có thể sửa đổi, thêm hoặc xóa mã thông báo.
  • Character filter: Bộ lọc ký tự được sử dụng để xử lý văn bản đầu vào trước khi đến tokenizer. Chúng có thể sửa đổi, thêm hoặc xóa từng ký tự khỏi văn bản.

‘Type’ trong Elasticsearch là gì?

Type trong Elasticsearch là một khái niệm đã bị loại bỏ từ phiên bản 7.0 trở đi. Trước đây, type được sử dụng như các danh mục logic hoặc các phần của một index, tương tự như table trong cơ sở dữ liệu quan hệ. Tuy nhiên, do hạn chế kỹ thuật và để đơn giản hóa mô hình dữ liệu, Elasticsearch đã chuyển sang mô hình ‘một index, một type’. Ứng dụng mới nên sử dụng một index riêng biệt cho mỗi loại dữ liệu thay vì sử dụng nhiều type trong một index.

Ví dụ: Trong kịch bản sản xuất ô tô của bạn, bạn có một Tatafactory index. Có ba type (table) trong index này như sau:

  • Cars
  • People
  • Spare_Parts

Mỗi type sau đó chứa các tài liệu có liên quan đến type đó (ví dụ: tài liệu Tata Innova được lưu trong type Cars). Trong tài liệu này, bạn có thể tìm thấy tất cả thông tin về chiếc xe cụ thể.

Elasticsearch đảm bảo độ tin cậy dữ liệu như thế nào?

Elasticsearch đảm bảo độ bền dữ liệu bằng cách sao chép dữ liệu trên các node khác nhau và ghi các hoạt động vào nhật ký giao dịch. Phương pháp này cung cấp khả năng phục hồi, phòng chống mất dữ liệu và duy trì tính toàn vẹn của dữ liệu.

Elasticsearch sử dụng cơ chế ghi vào nhật ký giao dịch (transaction log) trước khi dữ liệu được ghi vào đĩa, giúp khôi phục khi xảy ra sự cố. Ngoài ra, tính năng replica shards là cơ chế chính đảm bảo tính sẵn sàng cao – nếu một node chứa primary shard bị lỗi, replica shard sẽ được thăng cấp thành primary shard mới. Elasticsearch cũng hỗ trợ cấu hình wait_for_active_shards để kiểm soát số lượng bản sao cần thiết trước khi hoàn thành ghi.

Tầm quan trọng của trường _source trong Elasticsearch là gì?

Trường _source trong Elasticsearch là một trường hệ thống quan trọng lưu trữ đối tượng JSON gốc được truyền khi một tài liệu được lập index. Đây là một phần thiết yếu của Elasticsearch vì chúng cho phép nhiều chức năng khác nhau và cung cấp một số lợi ích như:

  • Truy xuất tài liệu: Khi bạn truy xuất tài liệu hoặc thực hiện tìm kiếm trong Elasticsearch, trường _source cho phép bạn trả về toàn bộ hoặc một phần đối tượng JSON gốc cho người dùng.
  • Cập nhật một phần: Elasticsearch hỗ trợ cập nhật một phần, cho phép bạn sửa đổi các trường cụ thể trong tài liệu mà không cần lập index toàn bộ tài liệu. Bằng cách chỉ định trường _source trong yêu cầu cập nhật và cung cấp các trường đã cập nhật, bạn có thể cập nhật các phần cần thiết của tài liệu.
  • Lọc nguồn: Elasticsearch cung cấp tính năng lọc nguồn, cho phép kiểm soát các trường được trả về trong kết quả tìm kiếm. Với tính năng lọc nguồn, bạn có thể chỉ định danh sách trắng hoặc danh sách đen các trường để bao gồm hoặc loại trừ khỏi trường _source.

Giải thích chức năng của cat.indices trong Elasticsearch

Trong Elasticsearch, API cat.indices cung cấp cách lấy thông tin về các index trong cluster theo định dạng mà con người có thể đọc. API cat.indices cho phép bạn lấy nhiều thông tin chi tiết và số liệu thống kê khác nhau về các index, chẳng hạn như tên, kích thước, trạng thái, số lượng tài liệu…

API cat.indices chủ yếu được sử dụng cho mục đích giám sát và khắc phục sự cố nhờ cung cấp tổng quan nhanh chóng và ngắn gọn về các index trong Elasticsearch cluster. Nó thường được quản trị viên và developer sử dụng để thu thập thông tin cần thiết về trạng thái và hiệu suất của các index.

Các câu hỏi phỏng vấn Elasticsearch cấp trung

Xử lý sao lưu và phục hồi dữ liệu trong Elasticsearch như thế nào?

Sao lưu và phục hồi dữ liệu trong Elasticsearch được xử lý thông qua chức năng snapshot và restore. Snapshot là gia tăng và có thể nắm bắt trạng thái của toàn bộ cluster hoặc các index cụ thể. Điều này đảm bảo dữ liệu có thể được phục hồi trong trường hợp hệ thống bị lỗi.

Để sao lưu Elasticsearch, đầu tiên bạn cần đăng ký repository lưu trữ snapshot (có thể là hệ thống tệp cục bộ, S3, Google Cloud Storage, v.v.). Sau đó, bạn có thể tạo snapshot bằng API:

PUT /_snapshot/my_backup/snapshot_1

Để khôi phục, bạn có thể sử dụng API restore:

POST /_snapshot/my_backup/snapshot_1/_restore

Làm thế nào để triển khai bảo mật trong các Elasticsearch cluster?

Việc triển khai bảo mật trong các Elasticsearch cluster bao gồm cấu hình kiểm soát truy cập dựa trên vai trò, HTTPS để liên lạc được mã hóa, lọc IP và ghi nhật ký kiểm tra. Các biện pháp bảo mật bảo vệ dữ liệu và đảm bảo tuân thủ các yêu cầu theo quy định.

Bảo mật Elasticsearch bao gồm nhiều lớp:

  • TLS/SSL cho mã hóa dữ liệu trên đường truyền;
  • Xác thực người dùng thông qua mật khẩu, LDAP, Active Directory hoặc SSO;
  • Kiểm soát truy cập dựa trên vai trò (RBAC) để phân quyền chi tiết;
  • Mã hóa dữ liệu tĩnh (encryption-at-rest) để bảo vệ dữ liệu trên đĩa;
  • Kiểm toán bảo mật để theo dõi các hành động người dùng;
  • Lọc IP để giới hạn quyền truy cập vào cluster theo địa chỉ IP.

Giải thích việc sử dụng hàm script_score của Elasticsearch

Hàm script_score trong Elasticsearch được sử dụng linh hoạt để tùy chỉnh điểm số của kết quả tìm kiếm dựa trên một tập lệnh chấm điểm tùy chỉnh. Hàm này cho phép bạn tác động đến điểm số liên quan của các tài liệu bằng cách cung cấp một tập lệnh tính điểm tùy chỉnh cho từng tài liệu.

Ví dụ về việc sử dụng script_score để điều chỉnh điểm dựa trên khoảng cách địa lý:

{
  "query": {
    "function_score": {
      "query": { "match_all": {} },
      "script_score": {
        "script": {
          "source": "decayDateGauss(doc['date'].value, '2021-01-01', '30d')"
        }
      }
    }
  }
}

Những biện pháp tốt nhất để quản lý nhật ký Elasticsearch là gì?

Quản lý nhật ký hiệu quả trong Elasticsearch rất quan trọng để giám sát, khắc phục sự cố và vận hành trơn tru các Elasticsearch cluster. Các biện pháp thực hành tốt nhất để quản lý nhật ký Elasticsearch bao gồm thiết lập mức nhật ký phù hợp, ghi nhật ký có cấu trúc và tích hợp các hệ thống quản lý nhật ký. 

Làm thế nào để sử dụng Profile API trong Elasticsearch để tối ưu hóa truy vấn?

Profile API trong Elasticsearch cung cấp thông tin chi tiết về việc thực hiện truy vấn. Profile API rất quan trọng để hiểu hiệu suất truy vấn và xác định các điểm nghẽn trong Elasticsearch.

Vai trò của Elasticsearch Ingest Node là gì?

Elasticsearch Ingest Node xử lý trước các tài liệu trước khi lập index, cho phép chuyển đổi và làm giàu dữ liệu. Ingest Node rất cần thiết để chuẩn bị dữ liệu và đảm bảo các yêu cầu lập index của Elasticsearch.

Chỉ ra điểm khác biệt giữa query và filter?

Filter trong Elasticsearch được sử dụng cho các truy vấn không tính điểm, được lưu trong bộ nhớ đệm góp phần nâng cao hiệu quả truy vấn. Các query được sử dụng cho tìm kiếm toàn văn bản với điểm liên quan. Sự khác biệt giữa filter và query rất quan trọng để tối ưu hóa hiệu suất tìm kiếm.

Query và filter có những khác biệt quan trọng như:

Đặc điểm Query Filter
Tính điểm Query tính điểm liên quan. Filter không tính điểm.
Bộ nhớ đệm Kết quả query không được lưu vào bộ nhớ đệm. Kết quả filter được lưu vào bộ nhớ đệm.
Hiệu suất Hiệu suất của query chậm hơn. Filter thường nhanh hơn vì không tính điểm và có thể sử dụng bộ nhớ đệm
Mục đích sử dụng Query dùng cho tìm kiếm với độ liên quan cao (ví dụ: ‘tìm tài liệu giống với X’). Filter dùng cho truy vấn chính xác (ví dụ: ‘tìm tài liệu có X’)

Thực hành tốt nhất là sử dụng filter khi có thể (đặc biệt cho truy vấn chính xác như term, range) và chỉ sử dụng query khi cần xếp hạng kết quả theo mức độ liên quan.

Tokenizer trong Elasticsearch là gì?

Trong Elasticsearch, tokenizer là trình phân tích cú pháp, chịu trách nhiệm chia nhỏ văn bản thành các token riêng lẻ trong quá trình lập index. Tokenization là một bước quan trọng trong quá trình phân tích, trong đó văn bản được chia thành các đơn vị hoặc token có ý nghĩa có thể được lập index và tìm kiếm hiệu quả. 

Một số tokenizer trong Elasticsearch như:

  • Standard tokenizer: Standard tokenizer là một công cụ phân tích cú pháp đa năng, hoạt động tốt với hầu hết các ngôn ngữ. Công cụ này chia nhỏ văn bản thành các từ riêng lẻ, có tính đến ngữ pháp và dấu câu.
  • Whitespace tokenizer: Phân tích khoảng trắng chia nhỏ văn bản thành các từ riêng lẻ dựa trên các ký tự khoảng trắng, chẳng hạn như khoảng trắng, tab và xuống dòng.
  • Keyword tokenizer: Keyword tokenizer không thực hiện bất kỳ việc loại bỏ từ gốc hoặc stopword nào mà chỉ đơn giản là chia nhỏ văn bản thành các từ riêng lẻ và không cần xử lý thêm.

Liệt kê các API Elasticsearch quan trọng

  • Index API: Index API được sử dụng để tạo, cập nhật và xóa các index. Một index là một tập hợp các tài liệu chia sẻ cùng một lược đồ. Lược đồ xác định cấu trúc của các tài liệu trong index.
  • Document API: Document API được sử dụng để tạo, cập nhật và xóa tài liệu. Tài liệu là một phần dữ liệu được lưu trữ trong index. Tài liệu có thể thuộc bất kỳ loại nào, nhưng chúng thường là các đối tượng JSON.
  • Search API: API được sử dụng để tìm kiếm tài liệu. Search API cho phép bạn chỉ định một truy vấn, là một tập hợp các tiêu chí mà tài liệu phải khớp để được trả về.
  • Aggregation API: API được sử dụng để tổng hợp kết quả tìm kiếm. Aggregation API cho phép bạn nhóm các kết quả tìm kiếm lại với nhau và tính toán số liệu thống kê tóm tắt.
  • Cat API: Cat API được sử dụng để lấy thông tin về index, tài liệu và shard. Cat API cung cấp nhiều thông tin khác nhau, chẳng hạn như số lượng tài liệu trong index, kích thước index và số lượng shard trong index.
  • Cluster API: Được sử dụng để quản lý và giám sát hoạt động của cluster, bao gồm thông tin về trạng thái sức khỏe, hiệu suất và cấu hình của cluster.
  • Snapshot API: Cho phép bạn sao lưu và khôi phục dữ liệu thông qua việc tạo và quản lý snapshot của index hoặc toàn bộ cluster.
  • Ingest API: Cho phép bạn định nghĩa và quản lý các pipeline xử lý dữ liệu trước khi lập index, hỗ trợ chuyển đổi và làm giàu dữ liệu.

Sự khác biệt giữa Elasticsearch và Solr là gì?

Nội dung Elasticsearch Solr
Tìm kiếm và lập index theo thời gian thực Elasticsearch tập trung nhiều vào khả năng lập index và tìm kiếm gần thời gian thực, cho phép lập index và truy xuất tài liệu rất nhanh. Solr hỗ trợ lập index và tìm kiếm theo thời gian thực nhưng trong một số trường hợp có thể không nhanh hoặc tính hợp lý không cao như Elasticsearch.
Schema (lược đồ) Elasticsearch mặc định không có schema, hỗ trợ ánh xạ tự động suy ra các kiểu dữ liệu và trường.  Solr yêu cầu một schema được xác định trước, mặc dù các phiên bản gần đây được giới thiệu hỗ trợ cho các trường động và hoạt động không có schema.
Tổng hợp Elasticsearch cung cấp một khuôn khổ tổng hợp toàn diện cho phép phân tích dữ liệu phức tạp, tóm tắt và trực quan hóa dữ liệu được lập index.  Solr có các thành phần Faceting và Stats, nhưng khả năng bị hạn chế hơn so với các tổng hợp của Elasticsearch.
Cộng đồng và hỗ trợ Có cộng đồng lớn và hỗ trợ thương mại từ Elastic. Là một dự án Apache với cộng đồng mã nguồn mở.
Khả năng mở rộng Được thiết kế từ đầu để phân tán và mở rộng theo chiều ngang. Có thể mở rộng nhưng yêu cầu cấu hình phức tạp hơn.
Giao diện người dùng Elasticsearch tích hợp với Kibana để trực quan hóa dữ liệu. Có Solr Admin UI nhưng thường kém mạnh mẽ hơn.

Mục đích của hàm match query là gì?

Hàm match query trong Elasticsearch được sử dụng để tìm kiếm các tài liệu có chứa một giá trị cụ thể. Match query có thể được sử dụng để tìm kiếm các tài liệu có chứa một chuỗi cụ thể, một số cụ thể hoặc một ngày cụ thể. Match query có hai đối số: tên trường và giá trị cần tìm kiếm. Tên trường là ‘tên của trường’ trong tài liệu bạn muốn tìm kiếm. Giá trị là giá trị bạn muốn tìm kiếm.

Ví dụ:

GET /my_index/_search
{
  "query": {
    "match": {
      "title": "elasticsearch guide"
    }
  }
}

Trong ví dụ này, Elasticsearch sẽ tìm tất cả tài liệu có chứa từ ‘elasticsearch’ hoặc ‘guide’ trong trường ‘title’. Match query mặc định sử dụng toán tử OR giữa các từ, nhưng có thể được cấu hình để sử dụng AND.

Giải thích mục đích của hàm truy vấn ‘exists’

Hàm truy vấn ‘exists’ trong Elasticsearch được sử dụng để kiểm tra xem một trường cụ thể có tồn tại trong tài liệu hay không. Hàm này đặc biệt hữu ích khi bạn muốn tìm kiếm tài liệu dựa trên sự có mặt hoặc vắng mặt của một trường nhất định. Truy vấn ‘exists’ có một đối số: tên trường. Tên trường là tên của trường mà bạn muốn tìm kiếm.

Mục đích của bool query và các mệnh đề chính của bool query trong Elasticsearch là gì?

Truy vấn boolean trong Elasticsearch là truy vấn sử dụng toán tử boolean để kết hợp nhiều truy vấn thành một truy vấn duy nhất. Các mệnh đề chính của truy vấn boolean là:

  • must – Mệnh đề must chỉ định các tài liệu khớp với truy vấn. Tất cả các tài liệu không khớp với mệnh đề must sẽ bị loại khỏi kết quả.
  • should – Mệnh đề should chỉ định các tài liệu phải khớp với truy vấn. Các tài liệu khớp với mệnh đề should sẽ được đưa vào kết quả, ngay cả khi chúng không khớp với mệnh đề must.
  • must_not – Mệnh đề must_not chỉ định các tài liệu không khớp với truy vấn. Tất cả các tài liệu khớp với mệnh đề must_not sẽ bị loại khỏi kết quả.

Cách thức hoạt động của chức năng xóa tự động các index cũ trong Elasticsearch rollover node?

Trong Elasticsearch, quy trình rollover được sử dụng để tự động quản lý và xóa các index cũ nhằm đảm bảo tổ chức dữ liệu và sử dụng tài nguyên hiệu quả. Một rollover node được chỉ định thực hiện thao tác rollover. Một số khía cạnh liên quan đến việc xóa các index cũ như sau:

  • Quản lý vòng đời index (Index Lifecycle Management – ILM): Việc tự động xóa các index cũ thường được thực hiện thông qua việc sử dụng ILM trong Elasticsearch.
  • Điều kiện chuyển tiếp: Khi cấu hình chính sách ILM, bạn sẽ xác định các điều kiện kích hoạt quy trình chuyển tiếp.
  • Hoạt động chuyển nhượng: Khi các điều kiện chuyển nhượng được đáp ứng, quy trình chuyển nhượng sẽ được kích hoạt.
  • Lưu giữ và xóa: Là một phần của chính sách ILM, bạn có thể chỉ định thời gian lưu giữ cho các index.
  • Phương pháp xóa: Elasticsearch cung cấp nhiều cơ chế khác nhau để xóa index cũ, tùy thuộc vào yêu cầu của bạn.

Elasticsearch xử lý việc lập index tài liệu không có lược đồ như thế nào?

Elasticsearch là một công cụ tìm kiếm dựa trên tài liệu không có lược đồ. Điều này có nghĩa là bạn không cần phải xác định lược đồ cho tài liệu của mình trước khi lập index cho chúng. Bạn chỉ cần lập index tài liệu dưới dạng đối tượng JSON, Elasticsearch sẽ tự động tạo lược đồ cho bạn.

Khi bạn lập index một tài liệu, Elasticsearch sẽ tạo một mapping cho tài liệu. Mapping này xác định các trường trong tài liệu và type của chúng. Elasticsearch sẽ sử dụng mapping này để lập index tài liệu và tìm kiếm tài liệu.

Inverted index trong ElasticSearch là gì?

Elasticsearch sử dụng cấu trúc dữ liệu giống như hashmap được gọi là inverted index cho phép tìm kiếm toàn văn nhanh chóng. Inverted index liệt kê tất cả các từ duy nhất xuất hiện trong một hoặc nhiều tài liệu và xác định tất cả tài liệu mà các từ đó xuất hiện. Bạn có thể thực hiện tìm kiếm nhanh trên hàng triệu tài liệu để tìm dữ liệu có liên quan.

Ví dụ: Giả sử bạn có hai tài liệu khác nhau:

  • ITviec is a good hiring company.
  • That is one of the good companies.

Các văn bản trên đã được tokenizer thành các term riêng biệt cho mục đích lập index. Tất cả các term duy nhất sau đó được lưu trữ trong index, cùng với thông tin như tài liệu chứa term đó, vị trí của nó, cũng như tần suất xuất hiện. Theo đó, inverted index như sau:

Term Frequency Document Document: Position
ITviec 1 1 1:1
is 2 1,2 1:2,1:2
a 1 1 1:3
good 2 1,2 1:4,2:6
hiring 1 1 1:5
Company 1 1 1:6
That 1 2 2:1
one 1 2 2:3
of 1 2 2:4
a 1 2 2:5
companies 1 1 2:7

Giả sử bạn đang tìm kiếm một thuật ngữ company hoặc companies. Với inverted index này, các truy vấn có thể tìm kiếm thuật ngữ và nhanh chóng xác định các tài liệu có chứa thuật ngữ này.

Các câu hỏi phỏng vấn Elasticsearch cấp cao

Làm thế nào để tìm kiếm trên nhiều trường trong Elasticsearch?

GET /my_index/_search
{
  "query": {
    "multi_match": {
      "query": "search text",
        "fields": ["field1", "field2"]
    }
  }
}

Mục đích của các index template trong Elasticsearch là gì và chúng được sử dụng như thế nào?

Index template trong Elasticsearch xác định các thiết lập, mapping và alias cho các index khớp với một template. Chúng được sử dụng để áp dụng các cấu hình tự động khi các index mới được tạo. Ví dụ:

{
  "index_patterns": ["log-*"],
  "settings": { "number_of_shards": 1 },
  "mappings": {
    "properties": {
      "host_name": { "type": "keyword" },
      "created_at": { "type": "date" }
    }
  }
}

Từ Elasticsearch 7.8 trở lên, chúng ta có thể sử dụng component templates kết hợp với composed index templates để tạo cấu trúc mẫu có thể tái sử dụng.

Làm thế nào để lập index lại dữ liệu trong Elasticsearch bằng cách chuyển đổi tùy chỉnh?

Sử dụng Reindex API với ingest pipeline để chuyển đổi:

PUT _ingest/pipeline/custom_pipeline
{
  "description": "Custom pipeline",
  "processors": [
    { "set": { "field": "new_field", "value": "new_value" } }
  ]
}
POST _reindex
{
  "source”: {
   "index": "source_index"
},
"dest": {
  "index": "destination_index"
  "pipeline": "custom_pipeline"
  }
}

Cấu hình Elasticsearch như thế nào để sử dụng thuật toán tương tự tùy chỉnh nhằm xếp hạng tài liệu trong kết quả tìm kiếm?

Để cấu hình Elasticsearch sử dụng thuật toán tương tự tùy chỉnh để xếp hạng tài liệu trong kết quả tìm kiếm, bạn sẽ phải xác định mức độ tương tự tùy chỉnh trong cài đặt index và áp dụng nó vào mapping trường.

PUT /my_index
{
  "settings": {
    "similarity": {
      "custom_similarity": {
        "type": "BM25",
        "k1": 2,
        "b": 0.75
      }
    }
  },
  "mappings": {
    "properties": {
      "field1": {
        "type": "text",
        "similarity": "custom_similarity"
      }
    }
  }
}

Có thể áp dụng hệ số tăng cường cho một trường cụ thể trong quá trình thực hiện truy vấn tìm kiếm không?

Để áp dụng hệ số tăng cường cho một trường cụ thể trong quá trình thực hiện truy vấn tìm kiếm, bạn cần sử dụng thuộc tính tăng cường trên truy vấn khớp.

GET /my_index/_search
{
  "query": {
   "multi_match": {
    "query": "search phrase",
    "fields": ["field1", "field2^2"]
   }
  }
}

Sự khác nhau giữa Elasticsearch và Apache Kafka là gì? 

Elasticsearch và Apache Kafka đều là công nghệ nguồn mở được sử dụng để xử lý và phân tích dữ liệu. Tuy nhiên, chúng có mục đích và trường hợp sử dụng khác nhau.

  • Data type: Elasticsearch được thiết kế để lập index và tìm kiếm dữ liệu văn bản. Apache Kafka được sử dụng để xử lý và phân phối bất kỳ loại dữ liệu nào, bao gồm văn bản, dữ liệu nhị phân và dữ liệu có cấu trúc.
  • Các trường hợp sử dụng: Elasticsearch thường được sử dụng để phân tích nhật ký, phân tích thời gian thực và tìm kiếm toàn văn. Apache Kafka thường được sử dụng để phát trực tuyến sự kiện, tích hợp dữ liệu và phân tích phát trực tuyến.
  • Hiệu suất: Elasticsearch có hiệu suất cao cho các truy vấn tìm kiếm. Apache Kafka mang lại hiệu suất cao cho dữ liệu phát trực tuyến.
  • Lưu trữ dữ liệu: Elasticsearch cung cấp khả năng lưu trữ dữ liệu có thể cấu hình nhưng không được thiết kế để lưu trữ dữ liệu lâu dài. Kafka cung cấp khả năng lưu trữ dữ liệu lâu dài và bền vững.

Đọc thêm: Kafka là gì? Những lợi ích tuyệt vời mà Kafka mang lại cho Dev

Elasticsearch xử lý các trường dữ liệu hình học và vị trí địa lý như thế nào?

Elasticsearch hỗ trợ mạnh mẽ cho các trường dữ liệu địa lý và hình học, cho phép bạn lập index, tìm kiếm và thực hiện các hoạt động không gian trên dữ liệu không gian. Elasticsearch xử lý các trường dữ liệu địa lý và hình học bằng cách sử dụng các kiểu dữ liệu geo_pointgeo_shape.

Kiểu dữ liệu geo_point được sử dụng để lưu trữ tọa độ vĩ độ và kinh độ, trong khi geo_shape có thể được sử dụng để lưu trữ nhiều dạng hình học khác nhau, chẳng hạn như điểm, đường, đa giác và hình tròn.

Ví dụ:

GET /my_index/_search
{
  "query": {
    "geo_distance": {
      "distance": "5km",
      "location": {
        "lat": 40.73,
        "lon": -74.1
      }
    }
  }
}

Có cần thiết phải cài đặt X-Pack cho Elasticsearch không? Một số lệnh X-pack cần thiết là gì?

X-Pack không còn là một phần cài đặt riêng biệt. Từ Elasticsearch 6.3 trở đi, X-Pack được tích hợp sẵn vào Elasticsearch và Kibana. Các tính năng cơ bản của X-Pack (như giám sát cơ bản) được bao gồm miễn phí, trong khi các tính năng nâng cao (như bảo mật, cảnh báo, học máy) yêu cầu giấy phép trả phí. Về bản chất, X-Pack là tiện ích mở rộng Elastic Stack kết hợp hoặc đóng gói các cảnh báo, báo cáo, giám sát, bảo mật và biểu đồ thành một package duy nhất có thể cài đặt nhanh chóng và dễ dàng. 

Mặc dù các thành phần của X-Pack hoạt động liền mạch với nhau, nhưng bạn có thể bật hoặc tắt các tính năng bạn cần. Vì X-Pack là tiện ích mở rộng Elastic Stack, bạn cần cài đặt cả Elasticsearch và Kibana trước khi cài đặt X-Pack. Phiên bản X-Pack phải khớp với phiên bản Elasticsearch và Kibana.

Sau đây là một số lệnh X-Pack có thể giúp bạn cấu hình bảo mật và thực hiện các tác vụ khác:

  • elasticsearch-certgen
  • elasticsearch-certutil
  • elasticsearch-reset-password
  • elasticsearch-setup-passwords
  • elasticsearch-syskeygen
  • elasticsearch-users…

Bulk API trong Elasticsearch là gì?

Bulk API trong Elasticsearch tạo điều kiện cho việc lập index hoặc xóa nhiều tài liệu trong một yêu cầu duy nhất, nâng cao hiệu suất và hiệu quả. Bulk API được sử dụng rộng rãi để thu thập và cập nhật dữ liệu quy mô lớn trong Elasticsearch.

Làm thế nào để thêm synonym vào tìm kiếm văn bản trong Elasticsearch?

Tạo trình analyzer tùy chỉnh có synonym filter:

PUT /my_index
{
  "settings": {
    "analysis": {
      "filter": {
        "synonym_filter": {
          "type": "synonym",
          "synonyms": [
            "big, large",
            "small, tiny"
          ]
        }
      },
      "analyzer": {
        "synonym_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "synonym_filter"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "synonym_analyzer"
      }
    }
  }
}

Triển khai tính năng tìm kiếm bằng cách sử dụng trình phân tích edge_ngram như thế nào?

Tạo một analyzer tùy chỉnh và áp dụng nó vào trường mapping:

PUT /my_index
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "edge_ngram_tokenizer": {
          "type": "edge_ngram",
          "min_gram": 1,
          "max_gram": 10,
          "token_chars": ["letter"]
        }
      },
      "analyzer": {
        "search_completion_analyzer": {
          "type": "custom",
          "tokenizer": "edge_ngram_tokenizer",
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "search_completion_analyzer",
        "search_analyzer": "standard"
      }
    }
  }
}

Lập index 1 tài liệu bằng cách xác định pipeline trong quá trình thu thập như thế nào?

Bạn có thể sử dụng phương pháp API “PUT” để tạo pipeline và API lập index để xác định pipeline trong quá trình thu thập:

PUT _ingest/pipeline/custom_pipeline
{
  "description": "Custom pipeline",
  "processors": [
    { "set": { "field": "new_field", "value": "new_value" } }
  ]
}
POST _reindex
{
  "source": {
    "index": "source_index"
  },
  "dest": {
    "index": "destination_index",
    "pipeline": "custom_pipeline"
  }
}

Làm thế nào để tạo trình phân tích tùy chỉnh?

Bạn có thể tạo trình phân tích tùy chỉnh bằng phương pháp API PUT, phân tích và chỉ định cấu hình tokenizer, filter và char_filter.

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "asciifolding"],
          "char_filter": ["html_strip"]
        }
      }
    }
  }
}

Thực hiện tìm kiếm theo phạm vi ngày trong Elasticsearch bằng cách sử dụng Query DSL như thế nào?

Để thực hiện tìm kiếm theo phạm vi ngày trong Elasticsearch bằng Query DSL, bạn cần sử dụng loại truy vấn phạm vi.

GET /my_index/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-7d/d",
        "lt": "now/d"
      }
    }
  }
}

Elasticsearch hỗ trợ nhiều định dạng ngày và biểu thức ngày tương đối:

  • ‘now’: Thời gian hiện tại
  • ‘now-1h’: 1 giờ trước
  • ‘now-1d/d’: Đầu ngày của ngày hôm qua
  • ‘now/w’: Đầu tuần hiện tại
  • ‘2023-01-01||+1M’: Ngày 01/02/2023 (1 tháng sau 01/01/2023)

Tổng kết câu hỏi phỏng vấn Elasticsearch

Nắm vững những câu hỏi phỏng vấn Elasticsearch vừa được chia sẻ trong bài viết này sẽ giúp ứng viên tự tin hơn trong quá trình phỏng vấn và chứng minh được năng lực của mình. Hi vọng rằng với sự chuẩn bị kỹ lưỡng, bạn sẽ thành công chinh phục vị trí mong muốn.