Tôi bị nhầm lẫn giữa source filtering (tức là sử dụng thông số _source_include) và tùy chọn fields của API GET trong elasticsearch. Chúng khác nhau về mặt hiệu suất như thế nào? Khi nào chúng được cho là sẽ được sử dụng?Sự khác nhau giữa tùy chọn lọc nguồn và trường trong elasticsearch nhận API là gì?
Trả lời
Cập nhật: tái: fields
Lưu ý rằng đây là tài liệu 1.x nếu bạn chỉ cần đến đây từ tương lai.
Để tương thích ngược, nếu tham số trường chỉ định các trường không được lưu trữ (ánh xạ cửa hàng được đặt thành false), nó sẽ tải _source và trích xuất từ đó. Chức năng này đã được thay thế bởi tham số source filtering.
AFAICT:
_source
nói elasticsearch liệu có bao gồm nguồn các văn bản phù hợp trong các phản ứng. "Nguồn" là dữ liệu trong tài liệu khi nó được chèn vào.
fields
nói elasticsearch bao gồm nguồn, nhưng chỉ bao gồm các định nghĩa lĩnh vực.
Hiệu suất: Trừ khi bạn có băng thông thấp cho máy chủ Elasticsearch, nó có thể không đáng kể.
Tôi cũng có cùng một nghi ngờ, here Tôi đã tìm thấy câu trả lời có thể là gì.
lĩnh vực hạn chế các lĩnh vực có nội dung phân tích cú pháp và trở
_source_filtering hạn chế các lĩnh vực mà trở
Một cách khác để nhìn thấy nó là để suy nghĩ rằng lĩnh vực là được sử dụng để tối ưu hóa truyền dữ liệu và sử dụng CPU trong khi _source_filtering chỉ tối ưu hóa truyền dữ liệu
Lọc nguồn cho phép chúng tôi kiểm soát phần nào của tài liệu JSON gốc được trả về cho mỗi lần truy cập [...] Cần lưu ý rằng điều này chỉ tiết kiệm chi phí băng thông giữa các nút tham gia tìm kiếm cũng như khách hàng, không phải CPU hoặc đĩa, như trường hợp khi sử dụng các trường.
Ngoài ra:
Một đặc điểm về các lĩnh vực mà không thường được gọi là khả năng chọn siêu dữ liệu lĩnh vực là tốt.Lưu ý đặc biệt là khả năng chọn trường _ttl, thực sự trả về số mili giây cho đến khi tài liệu hết hạn, chứ không phải tuổi thọ ban đầu của tài liệu. Một tính năng rất tiện dụng thực sự.
Thông số fields
chỉ áp dụng cho các trường stored
. Từ tài liệu 2.3:
Ngoài việc lập chỉ mục giá trị của trường, bạn cũng có thể chọn lưu trữ giá trị trường gốc để truy xuất sau này. Người dùng có trường sử dụng nền Lucene được lưu trữ để chọn trường nào họ muốn có thể trở lại trong kết quả tìm kiếm của họ. Trên thực tế, trường _source là trường được lưu trữ. Trong Elasticsearch, thiết lập các tài liệu riêng lẻ các trường được lưu trữ thường là một tối ưu hóa sai. Toàn bộ tài liệu đã được lưu trữ dưới dạng trường _source. Hầu như luôn luôn là tốt hơn để chỉ trích xuất các trường bạn cần sử dụng tham số _source .
Xem source filetring cho làm thế nào để hạn chế các lĩnh vực trở về từ _source
- 1. Sự khác nhau giữa searchkick và elasticsearch-ray là gì?
- 2. Sự khác nhau giữa phải và bộ lọc trong Truy vấn DSL trong elasticsearch là gì?
- 3. Sự khác nhau giữa API Gateway và ESB là gì?
- 4. Sự khác nhau giữa REST và API là gì?
- 5. Sự khác nhau giữa các tùy chọn đồng bộ luồng khác nhau trong C# là gì?
- 6. Sự khác nhau giữa AWS Elasticsearch và AWS Redshift
- 7. Sự khác nhau giữa IPV6_ADD_MEMBERSHIP và IPV6_JOIN_GROUP là gì?
- 8. Sự khác nhau giữa được bật: sai và chỉ mục: 'không' trong elasticsearch là gì?
- 9. Sự khác nhau giữa bind_host và publish_host trong ElasticSearch là gì?
- 10. Sự khác nhau giữa Subtotal và BaseSubtotal là gì?
- 11. Sự khác nhau giữa ImageMagick và GraphicsMagick là gì?
- 12. Sự khác nhau giữa insmod và modprobe là gì?
- 13. Unix: Sự khác biệt giữa nguồn và xuất là gì?
- 14. Sự khác nhau giữa WebRequest.DefaultWebProxy và WebRequest.GetSystemWebProxy() là gì?
- 15. Sự khác nhau giữa cat_id và term_id là gì?
- 16. Sự khác nhau giữa BufRead và BufEnter là gì?
- 17. Sự khác nhau giữa angularjs và dust.js là gì?
- 18. Sự khác nhau giữa API lõi của Ruby và API thư viện chuẩn là gì?
- 19. Sự khác nhau giữa gradient và imgradient là gì?
- 20. Sự khác nhau giữa "Nguồn" và "Nguồn được tạo" là gì?
- 21. Sự khác nhau giữa osql, isql và sqlcmd là gì?
- 22. Sự khác nhau giữa // và /// trong Visual Studio là gì?
- 23. Sự khác nhau giữa là gì và thừa kế?
- 24. Sự khác nhau giữa số lượng và total_count trên khía cạnh phạm vi elasticsearch là gì?
- 25. Sự khác nhau giữa CreateObject và Wscript.CreateObject là gì?
- 26. Sự khác nhau chính giữa Flink và Storm là gì?
- 27. Sự khác nhau giữa == và = trong Prolog là gì?
- 28. Sự khác nhau giữa hai bộ chọn này là gì?
- 29. Sự khác nhau giữa javaee-api và javaee-web-api là gì?
- 30. Sự khác nhau giữa XMLStreamReader và XMLEventReader là gì?
phần chênh lệch giữa _source_include là gì và các trường tham số? Cả hai dường như làm những việc tương tự. – vaishaks
Vâng, trên giao diện thứ hai: "Chức năng này đã được thay thế bởi thông số lọc nguồn". - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-get.html#get-fields – joar