2012-03-04 34 views
12

Các ứng dụng web lớn cung cấp tìm kiếm "toàn cầu" kết hợp dữ liệu từ các chỉ mục toàn văn khác nhau (đây sẽ là một bảng trong SQL) để cung cấp kết quả tìm kiếm được kết hợp theo số điểm của nó. Vì vậy, cho phép nói rằng bạn có video, bài viết blog và người dùng, sau đó khi bạn gõ vào "nhà" vào tìm kiếm nó có thể mang lại kết quả như thế này (ra lệnh bằng điểm):Tìm kiếm nhiều chỉ mục trong ElasticSearch (Tire)

  • Trang chủ của tôi (Blog Điều)
  • Home Town (Thành viên)
  • tôi muốn về nhà (video)

có ai biết làm thế nào để thực hiện tìm kiếm kết hợp như sử dụng ElasticSearch? Tốt hơn là sử dụng đá quý Tyre cho Rails, nhưng dữ liệu JSON của ElasticSearch thô cũng sẽ hoạt động.

Cảm ơn.

Trả lời

16

về lốp, có một khác biệt quan trọng: bạn đang sử dụng nó độc lập hoặc trong hội nhập/ActiveModel ActiveRecord.

Trong trường hợp cũ, chỉ cần tìm kiếm dựa trên nhiều chỉ mục, Tire.search ['indexA', 'indexB'] do ... end. Hoặc tìm kiếm toàn bộ cụm, Tire.search do ... end (tương đương với curl 'http://localhost:9200/_search?q=*').

Trong trường hợp sau, Lốp không xử lý tốt các tìm kiếm nhiều mô hình, tại thời điểm này. Lưu ý yêu cầu kéo này: https://github.com/karmi/tire/pull/218 - xây dựng đá quý của bạn với bản vá này được áp dụng và giúp kiểm tra giải pháp.

CẬP NHẬT

hiện lốp (> 0.4) có thể tải nhiều trường hợp mô hình tốt. Xem ví dụ integration test.

+1

Trả lời trực tiếp từ chủ sở hữu của đá quý :) Rất cám ơn! Và Có, tôi đang sử dụng nó với ActiveRecord. Trong trường hợp xấu nhất, tôi sẽ chỉ đặt: load => false để nó không sinh ra bất kỳ đối tượng ActiveRecord nào. – matsko

+0

Có, không có ': tải', bạn sẽ lấy lại các mô hình" đàn hồi ", các trường hợp' Tyre :: Kết quả :: Mục'. Tuy nhiên, tìm kiếm nhiều mô hình là thứ chúng tôi nên hỗ trợ và tôi thích bản vá được đề cập # 218. – karmi

1

Tôi chắc chắn rằng điểm cuối http://127.0.0.1:9200/_search sẽ thực hiện thủ thuật cho bạn. Hơn 99% dữ liệu của tôi nằm trong một chỉ mục, do đó, tôi khó có thể xác minh điều này cho bạn ở đây.

Ngoài ra, hãy kiểm tra các thiết bị đầu cuối đa tìm kiếm: http://www.elasticsearch.org/guide/reference/api/multi-search.html

+0

Lợi ích/nhược điểm từ việc đưa hầu hết dữ liệu của bạn vào một chỉ mục ES đơn lẻ là gì? Tìm kiếm chắc chắn dễ dàng hơn, ít phức tạp hơn, nhưng bất kỳ nhược điểm nào? – raffian

+0

Đôi khi không thể chỉ có 1 chỉ mục duy nhất. Đôi khi bạn chỉ tính toán sai số phần trước, và việc tạo chỉ mục mới nhanh hơn việc tái lập lại mọi thứ một lần nữa vào một chỉ mục khác. –

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