我是ElasticSearch和Couchbase的新手.我正在构建一个示例
Java应用程序来了解有关ElasticSearch和Couchbase的更多信息.
阅读ElasticSearch Java API,过滤器更好地用于不需要排序和缓存的情况.
我还没有想到如何使用FilterBuilders并有以下问题:
可以单独使用FilterBuilders进行搜索吗?
>或者它们是否必须与查询一起使用? (如果是,有人可以列举一个例子吗?)
>通过文档,如果我要根据字段值执行搜索并想要使用FilterBuilders,那我该怎么做呢? (使用AndFilterBuilder或TermFilterBuilder或InFilterBuilder?我不清楚它们之间的区别.)
对于第三个问题,我实际上使用查询测试它,并使用如下所示的过滤器.
当我尝试使用FilterBuilders进行搜索时,我得到了空的结果(没有行).我不知道我做错了什么
任何例子都将有所帮助.我经历了艰难的时间,我发现稀少的文档,甚至搜索导致各种不可靠的用户论坛.
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–
如答案所示,改为小写“tx”的作品.这个问题解决了.我还有以下几个问题:
>在什么情况下,与查询一起使用的过滤器?这将服务于什么目的?
> InFilter,TermFilter和MatchAllFilter之间的区别.任何插图都会有帮助.