2015-02-03 14 views
6

Có cách nào để cải thiện hiệu suất bộ nhớ khi sử dụng chỉ mục percolator elasticsearch không?Cách tối ưu hóa chỉ số percolator elasticsearch Hiệu suất bộ nhớ

Tôi đã tạo một chỉ mục riêng cho bộ lọc. Tôi có khoảng 1 000 000 người dùng đã tạo các tìm kiếm đã lưu (cho các cảnh báo qua email). Sau khi tạo chỉ mục percolator này, mức sử dụng vùng heap của tôi tăng lên 100% và máy chủ không phản hồi cho bất kỳ truy vấn nào. Tôi có một số tài nguyên hạn chế và không thể đơn giản ném thêm RAM vào vấn đề. Giải pháp duy nhất là xóa chỉ mục chứa các tìm kiếm đã lưu của tôi.

Từ những gì tôi đã đọc chỉ mục bình lược nằm trong bộ nhớ vĩnh viễn. Điều này hoàn toàn cần thiết? Có cách nào để điều chỉnh hành vi này nhưng vẫn bảo toàn chức năng không? Có cách nào để tối ưu hóa dữ liệu/truy vấn/cấu trúc chỉ mục của tôi để phá vỡ hành vi này trong khi vẫn đạt được kết quả mong muốn không?

+0

Bạn đã cấp phát bộ nhớ máy chủ ElasticSearch của mình bao nhiêu bộ nhớ? –

+0

@DennisGorelik Tôi có 3 nút mỗi với 16GB và một phân bổ heap 8GB. – richardpj

Trả lời

0

Không có giải pháp nào cho vấn đề này từ quan điểm của Tìm kiếm ElasticSearch cũng như không có khả năng. Tôi đã nói chuyện trực tiếp với những người chơi ElasticSearch và câu trả lời của họ là: "ném thêm phần cứng vào nó".

Tuy nhiên, tôi đã tìm thấy cách để giải quyết vấn đề này nhằm giảm thiểu việc sử dụng tính năng này của tôi. Khi tôi phân tích dữ liệu tìm kiếm đã lưu của mình, tôi phát hiện ra rằng các tìm kiếm của tôi bao gồm khoảng 100.000 tìm kiếm từ khóa duy nhất cùng với các hoán vị bộ lọc khác nhau, tạo ra hơn 1.000 000 tìm kiếm đã lưu.

Nếu tôi nhìn vào các bộ lọc họ là những thứ như:

  • Location - 300
  • nghiệp - 50
  • vv ...

Đưa ra một không gian giải pháp của :

100 000 *> 300 *> 50 * ... ~ => 1 500 000 000

Tuy nhiên nếu tôi là để phân hủy các tìm kiếm và chỉ mục các từ khóa tìm kiếm và lọc riêng trong chỉ số lọc cà phê, tôi kết thúc với tìm kiếm ít:

100 000 +> 300 +> 50 + ... ~ => 100 350

Và những tìm kiếm đó nhỏ hơn và ít phức tạp hơn so với tìm kiếm ban đầu.

Bây giờ, tôi tạo một chỉ mục thứ hai (không phải là bộ lọc) liệt kê tất cả 1000.000 tìm kiếm đã lưu và bao gồm các id của các thành phần tìm kiếm từ chỉ mục percolator .

Sau đó, tôi thấm qua một tài liệu và sau đó thực hiện truy vấn thứ hai lọc các tìm kiếm dựa vào từ khóa và lọc kết quả của bộ lọc. Tôi thậm chí có thể duy trì điểm số liên quan vì điều này được trả lại hoàn toàn từ các tìm kiếm từ khóa.

Cách tiếp cận này sẽ làm giảm đáng kể dấu chân bộ nhớ chỉ mục của tôi trong khi phục vụ cùng một mục đích.

Tôi muốn mời phản hồi về phương pháp này (Tôi chưa thử nhưng tôi sẽ giữ cho bạn được đăng).

Tương tự như vậy, nếu cách tiếp cận của tôi thành công, bạn có nghĩ rằng đó là giá trị yêu cầu tính năng không?

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