2013-07-19 39 views
5

Tôi đã đọc this question và đồng nghiệp của tôi đã khiến tôi nghi ngờ:Truy vấn so với Bộ lọc - Thứ tự thực hiện

Trong bộ lọc được lọc, bộ lọc được áp dụng khi nào? Trước hoặc sau khi thực hiện truy vấn? Khi nào kết quả được lưu trong bộ nhớ cache?

Nếu bộ lọc được áp dụng trước, sẽ không phải là một điều tốt để sao chép phần truy vấn trong bộ lọc? Nếu bộ lọc được áp dụng sau đó, thì tôi không hiểu được những gì được lưu trong bộ nhớ cache.

Trả lời

9

May mắn thay, ES cung cấp hai loại bộ lọc để bạn có thể làm việc với:

{ 
    "query" : { 
    "field" : { "title" : "Catch-22" } 
    }, 
    "filter" : { 
    "term" : { "year" : 1961 } 
    } 
} 


{ 
    "query": { 
    "filtered" : { 
     "query" : { 
     "field" : { "title" : "Catch-22" } 
     }, 
     "filter" : { 
     "term" : { "year" : 1961 } 
     } 
    } 
    } 
} 

Trong trường hợp đầu tiên, bộ lọc được áp dụng cho tất cả các tài liệu được tìm thấy bởi các truy vấn. Trong trường hợp thứ hai, các tài liệu được lọc trước khi truy vấn chạy. Điều này mang lại hiệu suất tốt hơn.

Trích dẫn từ: http://www.packtpub.com/elasticsearch-server-for-fast-scalable-flexible-search-solution/book

Giới thiệu về bộ nhớ cache, tôi không chắc về cơ chế bộ lọc cache. Dự đoán của tôi sẽ là: Trường hợp đầu tiên, vì bộ lọc chống lại tập hợp các kết quả được truy vấn trả về, bộ nhớ cache là loại cụ thể cho bộ trả lại này. Trường hợp thứ hai, bộ lọc được áp dụng trước, bộ nhớ cache được lưu trữ cho các chỉ mục bạn đã kiểm tra, do đó, bộ nhớ cache này có thể sử dụng lại nhiều hơn vì không dựa vào nội dung của truy vấn, nhưng chi phí bộ nhớ lớn hơn và thời gian truy vấn đầu tiên thời gian (trước khi bộ nhớ cache được tạo).

1

Hãy để tôi giải thích cho bạn thực hiện truy vấn tìm kiếm-

Điều đầu tiên là luôn có tài liệu tham khảo đầy đủ mà bạn muốn tìm kiếm.

Nếu bạn có truy vấn bộ lọc đi kèm với truy vấn tìm kiếm thì nó sẽ chỉ làm cho tài liệu đó nhỏ hơn hoặc nói cách khác là truy vấn bộ lọc là kết quả được lưu trong bộ nhớ cache của cùng một truy vấn. Bây giờ bạn có một cây nhỏ hơn để tìm kiếm từ bằng văn bản truy vấn của bạn.

Bây giờ phần nghi ngờ của bạn- Sao chép truy vấn trong bộ lọc sẽ chỉ tăng chi phí cơ chế bộ nhớ cache và có nhiều dòng hướng dẫn về những gì cần đưa vào truy vấn bộ lọc và những gì cần bỏ qua. Đó là tất cả chơi của sự liên quan.

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