Elasticsearch的javaAPI之Query DSL-filters

Elasticsearch的javaAPI之Query DSL-filters

REST query dsl一样,elasticsearch提供了一个完整的Java query dsl。 工厂过滤器建造者是 FilterBuilders 一旦准备好您的查询,就可以使用query api。

如何构建查询? 使用 FilterBuilders, 导入它们在你的类:

import org.elasticsearch.index.query.FilterBuilders.*;


请注意,在 FilterBuilder对象上可以轻松地打印(又名调试) 查询生成的JSON,用  toString()方法  





下面选取了几个常用的filer:

andfilter

FilterBuilders.andFilter(


    FilterBuilders.rangeFilter("postDate").from("2010-03-01").to("2010-04-01"),


    FilterBuilders.prefixFilter("name.second", "ba")


    );


注意,您可以缓存结果,用 AndFilterBuilder#cache(boolean) method方法。

 

bool filter

FilterBuilders.boolFilter()


    .must(FilterBuilders.termFilter("tag", "wow"))


    .mustNot(FilterBuilders.rangeFilter("age").from("10").to("20"))


    .should(FilterBuilders.termFilter("tag", "sometag"))


    .should(FilterBuilders.termFilter("tag", "sometagtag"));


用  BoolFilterBuilder#cache(boolean) method缓存结果



exists filter

FilterBuilders.existsFilter("user");




matchall filter

FilterBuilders.matchAllFilter();




notfilter

FilterBuilders.notFilter(


    FilterBuilders.rangeFilter("price").from("1").to("2"));




or filter

FilterBuilders.orFilter(


        FilterBuilders.termFilter("name.second", "banon"),


        FilterBuilders.termFilter("name.nick", "kimchy")


    );


OrFilterBuilder#cache(boolean) method缓存结果



query filter

FilterBuilders.queryFilter(


        QueryBuilders.queryString("this AND that OR thus")


    );


QueryFilterBuilder#cache(boolean) method缓存结果



range filter

FilterBuilders.rangeFilter("age")


    .from("10")


    .to("20")


    .includeLower(true)


    .includeUpper(false);




// A simplified form using gte, gt, lt or lte


FilterBuilders.rangeFilter("age")


    .gte("10")


    .lt("20");


RangeFilterBuilder#cache(boolean)method 缓存结果

t

term filter

FilterBuilders.termFilter("user", "kimchy");

你可以使用 TermFilterBuilder#cache(boolean) method来不适用缓存.

t

terms filter

FilterBuilders.termsFilter("user", "kimchy", "elasticsearch")


    .execution("plain");     // Optional, can be also "bool", "and" or "or"


                            // or "bool_nocache", "and_nocache" or "or_nocache"


你可以不使用缓存,用 TermsFilterBuilder#cache(boolean)method



cache

默认情况下,一些过滤器缓存,一些不缓存缓存。 你可以有一个好的控制使用 cache(boolean) 方法时存在。 例如:

FilterBuilder filter = FilterBuilders . andFilter (


         FilterBuilders.rangeFilter("postDate").from("2010-03-01").to("2010-04-01"),


        FilterBuilders.prefixFilter("name.second", "ba")


        )


    .cache(true);


 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值