Chúng tôi có trong cá thể ElasticSearch của chúng tôi khoảng 55.000.000 tài liệu. Chúng tôi có tệp CSV với user_ids, CSV lớn nhất có mục nhập 9 triệu. Tài liệu của chúng tôi có user_id là khóa, vì vậy điều này rất thuận tiện.Áp dụng "thẻ" cho hàng triệu tài liệu, sử dụng phương pháp hàng loạt/cập nhật
Tôi đang đăng câu hỏi vì tôi muốn thảo luận và có tùy chọn tốt nhất để thực hiện việc này, vì có nhiều cách khác nhau để giải quyết vấn đề này. Chúng tôi cần thêm "nhãn" mới vào tài liệu nếu tài liệu người dùng chưa có tài liệu, ví dụ: gắn thẻ người dùng bằng "stackoverflow" hoặc "github".
- Có điểm cuối cổ điển partial
update
. Điều này nghe có vẻ chậm như chúng ta cần phải lặp lại hơn 9 triệu user_ids và đưa ra lời gọi api cho mỗi người trong số họ. - có
bulk
request, cung cấp một số hiệu suất tốt hơn nhưng với giới hạn 1000-5000 tài liệu có thể được đề cập trong một cuộc gọi. Và biết khi lô quá lớn là kinda biết làm thế nào chúng ta cần phải tìm hiểu trên đường đi. - Sau đó, có official open issue cho điểm cuối
/update_by_query
có rất nhiều lưu lượng truy cập, nhưng không có xác nhận nào được thực hiện trong bản phát hành chuẩn. - Về vấn đề mở này, có đề cập đến một số update_by_query plugin cần xử lý tốt hơn, nhưng có các sự cố cũ và mở nơi người dùng đang phàn nàn về các sự cố về hiệu suất và vấn đề về bộ nhớ.
- Tôi không chắc nó có thể làm được trên EL, nhưng tôi nghĩ tôi sẽ tải tất cả các mục CSV vào một chỉ mục riêng biệt, và bằng cách nào đó sẽ tham gia hai chỉ mục và áp dụng tập lệnh sẽ thêm thẻ nếu chưa tồn tại.
Vì vậy, câu hỏi vẫn là cách tốt nhất để làm điều này, và nếu một số bạn đã làm trong quá khứ này, hãy đảm bảo bạn chia sẻ số/hiệu suất của mình và cách bạn sẽ làm khác đi lần này.
câu hỏi thú vị; Tôi sẽ chọn tùy chọn # 2 trộn với tùy chọn # 5; 1k tài liệu cho mỗi yêu cầu là tốt; Tôi cũng sẽ tạo một tài liệu 55M duy nhất bởi user_id trống trước khi thêm nhãn mới và sau đó cập nhật tài liệu –