elasticsearch data too large,Elasticsearch的javaAPI之Query DSL-filters

 2023-11-19 阅读 28 评论 0

摘要:Elasticsearch的javaAPI之Query DSL-filters 和REST query dsl一樣,elasticsearch提供了一個完整的Java query dsl。?工廠過濾器建造者是 FilterBuilders?一旦準備好您的查詢,就可以使用query api。 如何構建查詢? 使用 FilterBuilders, 導入它們在你的類
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);


 

?


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/183423.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息