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);

				
时间: 2024-10-12 23:23:20

Elasticsearch的javaAPI之Query DSL-filters的相关文章

elasticsearch的javaAPI之query

elasticsearch的javaAPI之query API the Search API允许执行一个搜索查询,返回一个与查询匹配的结果(hits). 它可以在跨一个或多个index上执行, 或者一个或多个types. 查询可以使用提供的 query Java API 或filter Java API . 搜索请求的主体是建立使用 SearchSourceBuilder上. 这里有一个例子: import org.elasticsearch.action.search.SearchRespon

Elasticsearch的javaAPI之query dsl-queries

和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者(factory)是 QueryBuilders . 一旦准备好您的查询,您可以使用query api. 如何使用QueryBuilders?仅仅就是加入下面的包: import org.elasticsearch.index.query.QueryBuilders.*; 请注意,您可以轻松地打印(又名调试) 查询生成的JSON,用 toString()方法 QueryBuil

Elasticsearch的javaAPI之facet,count,delete by query

Elasticsearch的javaAPI之count count API允许轻松地执行一个查询,获得匹配的数量,可以跨越一个或多个index ,一个或多个type. import static org.elasticsearch.index.query.xcontent.FilterBuilders.*; import static org.elasticsearch.index.query.xcontent.QueryBuilders.*; CountResponse response =

Query DSL for elasticsearch Query

Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) http://elasticsearch.qiniudn.com/ --简介-- elasticsearch 提供基于JSON的完整的Query DSL查询表达式(DSL即领域专用语言). 一般来说, 普通的查询如 term 或者 prefix. 另外还有混合查询如 bool 等. 另外查询表达式(Queries)还能够关联特定的过

Elasticsearch Index API & Aggregations API & Query DSL

这篇小菜给大家演示和讲解一些Elasticsearch的API,如在工作中用到时,方便查阅. 一.Index API 创建索引库 curl -XPUT 'http://127.0.0.1:9200/test_index/' -d '{     "settings" : {       "index" : {       "number_of_shards" : 3,       "number_of_replicas" : 1

Elasticsearch学习笔记(二)Search API 与 Query DSL

一. Search API eg: GET /mall/product/_search?q=name:productName&sort=price desc 特点:search的请求参数都是以HTTP请求的的query stirng 附带的 适用范围:适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息: 适用于简单的查询条件 二.Query DSL 将Query DSL视为ASL查询则有两种类型的查询语句: 叶子查询语句(Leaf Query clause) : 叶

Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query

目录 引言 Match Phase Query slop 参数 analyzer 参数 zero terms query Match Phrase 前缀查询 max_expansions 小结 参考文档 系列文章列表 Query DSL Java Rest Client API 引言 今天再读庄子的<逍遥游>,其中鲲鹏之扶摇直上九万里之气势,蜩(tiao)与学鸠之渺小之对比,令人印象深刻,并对鲲鹏之志心生向往.而郭象在注<庄子>卷中却说,"苟足于其性,则虽大鹏无以自贵于小

Elasticsearch Query DSL备忘(1)(Constant score query和Bool Query)

Query DSL (Domain Specific Language),基于json的查询方式 1.Constant score query,常量分值查询,目的就是返回指定的score,一般都结合filter使用,因为filter context忽略score. GET /customer/_search { "query": { "constant_score": { "filter": { "match": { &quo

ElasticSearch search api的基础语法+Query DSL搜索+filter与query对比+组合查询+定位不合法的搜索

一. search api的基础语法 1.search语法 GET /search{} GET /index1,index2/type1,type2/search{} GET /_search{ "from": 0, "size": 10} 2.http协议中get是否可以带上request body HTTP协议,一般不允许get请求带上request body,但是因为get更加适合描述查询数据的操作,因此还是这么用了 GET /_search?from=0&a