2013-08-23 37 views
20

Nếu bạn sử dụng query_string trong elasticsearch với truy vấn không may mắn trên tập dữ liệu lớn, bạn gần như có thể mang cụm xuống và có thể mất nhiều thời gian cho đến khi truy vấn kết thúc. Đây có thể là vấn đề nghiêm trọng nếu bạn cho phép người dùng chỉ định chuỗi truy vấn tùy ý.Làm cách nào để hạn chế thời gian truy vấn trong elasticsearch?

Vì vậy, có cách nào giới hạn thời gian và/hoặc tài nguyên mà truy vấn đó thực hiện không? Nếu bạn có thể yêu cầu elasticsearch hủy bỏ việc truy vấn tự động sau 10 giây, điều đó sẽ giúp khá nhiều.

Trả lời

16

Bạn có thể chuyển tìm kiếm "thời gian chờ" trong request body hoặc trong uri request. Nếu yêu cầu tìm kiếm hết trước khi thu thập tất cả kết quả, kết quả một phần sẽ được trả về.

Dưới đây là một yêu cầu ví dụ uri trong 10 giây (đơn vị tính theo mili giây):

http://localhost:9200/_search?timeout=10000 

Nếu bạn đặt thời gian chờ đủ thấp, json trả về sẽ hiển thị "timed_out": đúng.

+16

Lưu ý rằng mặc dù điều này gây ra độ co giãn để trả về phản hồi sau khi hết thời gian chờ (ish), nó [không ngăn chặn] (https://github.com/elasticsearch/elasticsearch/issues/3627) máy chủ từ hoàn thành việc thực hiện truy vấn và do đó không sử dụng trong việc hạn chế tải máy chủ. Xem thêm [# 4586] (https://github.com/elasticsearch/elasticsearch/pull/4586) và [# 2929] (https://github.com/elasticsearch/elasticsearch/issues/2929) – Basic

+1

Chỉ có liên quan gần đây cập nhật dường như là https://github.com/elastic/elasticsearch/issues/9156#issuecomment-99557275 – Nemo

Các vấn đề liên quan