2013-01-08 17 views
9

Chi phí của việc thêm chỉ mục được ghi chép đầy đủ, nhưng tôi đã không thể tìm thấy thông tin tốt về thời điểm sử dụng nhiều chỉ mục liên quan đến các loại tài liệu khác nhau được lập chỉ mục.Trong ElasticSearch, tôi có nên sử dụng nhiều chỉ mục cho các thực thể riêng biệt nhưng có liên quan không?

Dưới đây là một ví dụ tổng quát để minh họa cho câu hỏi:

Giả sử chúng ta có các đối tượng sau

  • Sản phẩm (Name, ProductID, ProductCategoryID, Danh sách-of-Stores)
  • Danh mục sản phẩm (Tên, ProductCategoryID)
  • Cửa hàng (Tên, StoreID)

Tôi có nên đổ ba loại tài liệu khác nhau này vào một chỉ mục duy nhất, mỗi loại có thích hợp elasticsearch type không?

Tôi gặp khó khăn khi thiết lập nơi vẽ đường kẻ trên một so với nhiều chỉ mục.

Điều gì xảy ra nếu chúng tôi thêm thực thể không liên quan, "Trang web". Chắc chắn là một chỉ mục riêng biệt?

+2

Câu hỏi hay. Hãy xem qua các mô hình [Data Design Patterns] (http://vimeo.com/44716955) được đưa ra bởi tác giả elasticsearch tại Berlin Buzzwords. Cuối cùng, nó thực sự phụ thuộc vào những gì bạn sẽ làm với dữ liệu của bạn: bạn có bao nhiêu dữ liệu? Bạn luôn muốn tìm kiếm trên tất cả dữ liệu của mình? Bạn sẽ tìm kiếm bằng cách nào? – javanna

+0

Cảm ơn bạn đã liên kết. Tôi sẽ xem nó! Trong ví dụ cụ thể của tôi, tôi sẽ có khoảng 100.000 tài liệu của ba hoặc bốn loại. Bây giờ bạn làm tăng một điểm tốt, có lẽ một tập hợp con của các tài liệu cần phải được tìm kiếm 80% thời gian, trong khi 20% thời gian tất cả các tài liệu cần phải được tìm kiếm. Tôi nhận thấy rằng elasticsearch có khả năng tìm kiếm nhiều chỉ mục khi cần. (nguồn: http://www.elasticsearch.org/guide/reference/api/search/indices-types.html) –

Trả lời

6

Gần đây tôi đã tạo mô hình một phụ trợ ElasticSearch từ đầu và từ quan điểm của tôi, tùy chọn tốt nhất là đặt tất cả các loại tài liệu có liên quan trong cùng một chỉ mục.

Tôi đọc rằng some people had problems with too many concurrent indexes (1 chỉ mục cho mỗi loại). Nó tốt hơn cho hiệu suất và sự mạnh mẽ để thống nhất các loại liên quan trong cùng một chỉ mục.

Bên cạnh đó, nếu các loại có trong chỉ mục cùng bạn có thể sử dụng "_parent" trường này để tạo mô hình hierarquical cho phép để bạn tính năng thú vị cho tìm kiếm như "has_child" và "has_parent" và tất nhiên bạn có không trùng lặp dữ liệu trong mô hình của bạn.

7

Một đoạn video rất thú vị giải thích elasticsearch "Thiết kế dữ liệu Patterns" bởi Shay Banon:

http://vimeo.com/44716955

câu hỏi chính xác này được trả lời lúc 13:40 nơi kiểm tra các luồng dữ liệu khác nhau, bằng cách nhìn vào các khái niệm của Type, LọcRouting

Trân

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