Tôi mới sử dụng ElasticSearch và Couchbase. Tôi đang xây dựng một ứng dụng Java mẫu để tìm hiểu thêm về ElasticSearch và Couchbase.Tìm kiếm đàn hồi - Sử dụng bộ lọcBuilder
Đọc ElasticSearch Java API, Bộ lọc được sử dụng tốt hơn trong trường hợp sắp xếp theo điểm không cần thiết và để lưu vào bộ nhớ cache. tôi vẫn chưa tìm ra cách để sử dụng FilterBuilders và có thắc mắc sau:
- thể
FilterBuilders
được sử dụng một mình để tìm kiếm? - Hoặc chúng luôn phải được sử dụng với một số
Query
? (Nếu đúng, có thể ai đó vui lòng liệt kê một ví dụ không?) - Đi qua tài liệu, nếu tôi muốn thực hiện tìm kiếm dựa trên giá trị trường và muốn sử dụng Trình tạo bộ lọc, làm cách nào tôi có thể thực hiện điều đó? (Sử dụng
AndFilterBuilder
hoặcTermFilterBuilder
hoặcInFilterBuilder
? Tôi không rõ ràng về sự khác biệt giữa chúng.)
Đối với câu hỏi thứ 3, tôi thực sự đã thử nghiệm nó với tìm kiếm sử dụng các truy vấn và sử dụng bộ lọc như hình dưới đây. Tôi nhận được kết quả trống (không có hàng) khi tôi thử tìm kiếm bằng cách sử dụng FilterBuilders
. Tôi không chắc mình đang làm gì sai.
Bất kỳ ví dụ nào đều hữu ích. Tôi đã có một thời gian khó khăn đi qua tài liệu mà tôi tìm thấy thưa thớt và thậm chí tìm kiếm dẫn đến các diễn đàn người dùng không đáng tin cậy khác nhau.
private void processQuery() {
SearchRequestBuilder srb = getSearchRequestBuilder(BUCKET);
QueryBuilder qb = QueryBuilders.fieldQuery("doc.address.state", "TX");
srb.setQuery(qb);
SearchResponse resp = srb.execute().actionGet();
System.out.println("response :" + resp);
}
private void searchWithFilters(){
SearchRequestBuilder srb = getSearchRequestBuilder(BUCKET);
srb.setFilter(FilterBuilders.termFilter("doc.address.state", "tx"));
//AndFilterBuilder andFb = FilterBuilders.andFilter();
//andFb.add(FilterBuilders.termFilter("doc.address.state", "TX"));
//srb.setFilter(andFb);
SearchResponse resp = srb.execute().actionGet();
System.out.println("response :" + resp);
}
- -UPDATE--
Như đã đề cập trong câu trả lời, thay đổi thành chữ thường "tx" công trình. Với câu hỏi này được giải quyết. Tôi vẫn có các câu hỏi sau:
- Trong trường hợp nào, là bộ lọc được sử dụng với truy vấn? Mục đích của mục đích này là gì?
- Sự khác biệt giữa
InFilter
,TermFilter
vàMatchAllFilter
. Mọi hình minh họa sẽ giúp ích.
Bạn nói đúng, tôi chỉnh sửa bài để thiết lập bộ lọc trên searchrequestbuilder. và bằng cách thay đổi thành "tx" tôi thấy kết quả! cảm ơn. Tôi đã chỉnh sửa bài viết để bao gồm điều này và một số câu hỏi vẫn còn tồn tại..thanks một lần nữa. –
Tôi đã cập nhật câu trả lời của mình theo câu hỏi được cập nhật của bạn, hãy xem nó. – javanna
Hãy xem ví dụ tìm kiếm này cho ví dụ liên kết bị hỏng. –