Elasticsearch java API (21)查询 DSL 复合查询

复合查询编辑

复合查询包裹其他化合物或叶查询,要么把他们的结果和成绩,改变他们的行为,或者从查询过滤上下文切换。

这组查询:

constant_score 查询
查询这包裹另一个查询,但在过滤器上下文中执行它。 所有匹配的文档给出相同的“不变”  _score.
bool 查询
默认的查询组合多个叶子或复合查询子句,  must,  should,  must_not ,或  filter 条款。  must should 条款有成绩的总和——更匹配的条款,——而越好  must_not  filter 在过滤器上下文中执行条款。
dis_max 查询
接受多个查询的查询,并返回查询的匹配任何条款的文档。  bool 从所有匹配的查询,查询结合分数 dis_max 查询使用最好的分数——匹配查询子句。
function_score 查询
修改分数主要查询返回的函数来考虑受欢迎程度等因素,近因,距离,或自定义算法用脚本实现。
boosting 查询
返回文档匹配  positive 查询,但是减少文档的得分也匹配  negative 查询。
indices 查询
为指定的指标,执行一个查询,另一个用于其他指标。
and, or, not
的同义词  bool 查询。
filtered 查询
结合查询子句的查询上下文在过滤器与另一个上下文。  [2.0.0]在2.0.0弃用。使用 bool 查询。
limit 查询
限制了每个实例的文档检查数量。

常数分数查询编辑

看到常数分数查询

<span style="font-size:14px;">QueryBuilder qb = constantScoreQuery(
</span><pre><span style="font-size:14px;">        termQuery("name","kimchy")  //1    
    )
    .boost(2.0f);    //2</span>
 

您的查询

查询成绩

Bool查询编辑

看到Bool查询

QueryBuilder qb = boolQuery()
    .must(termQuery("content", "test1"))    //1
    .must(termQuery("content", "test4"))    //2
    .mustNot(termQuery("content", "test2")) //3
    .should(termQuery("content", "test3")); //4

必须查询

不能查询

应该查询

说马克斯查询编辑

看到说马克斯查询

QueryBuilder qb = disMaxQuery()
    .add(termQuery("name", "kimchy"))       //1 
    .add(termQuery("name", "elasticsearch")) //2
    .boost(1.2f)               //3              
    .tieBreaker(0.7f);     //4                  

添加您的查询

添加您的查询

促进因素

领带断路器

函数的分数查询编辑

看到函数的分数查询.

使用 ScoreFunctionBuilders导入它们在你的类:

import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.*;
QueryBuilder qb = functionScoreQuery()
    .add(
        matchQuery("name", "kimchy"), //1            
        randomFunction("ABCDEF")    //2              
    )
    .add(
        exponentialDecayFunction("age", 0L, 1L)   //3
    );

添加一个基于查询第一个函数

和随机分数基于给定的种子

根据年龄字段添加另一个函数

增加查询编辑

看到增加查询

QueryBuilder qb = boostingQuery()
    .positive(termQuery("name","kimchy"))  //1 
    .negative(termQuery("name","dadoonet")) //2
    .negativeBoost(0.2f);        //3           

查询,将促进文档

查询将降级文档

消极的刺激

索引查询编辑

看到索引查询

// Using another query when no match for the main one
QueryBuilder qb = indicesQuery(
        termQuery("tag", "wow"),     //1        
        "index1", "index2"            //2       
    ).noMatchQuery(termQuery("tag", "kow")); //3

查询执行选定的指标

选择的指标

非匹配索引上执行查询

// Using all (match all) or none (match no documents)
QueryBuilder qb = indicesQuery(
        termQuery("tag", "wow"),    //1        
        "index1", "index2"             //2     
    ).noMatchQuery("all");                //3  

查询执行选定的指标

选择的指标

none(匹配文档) all(匹配所有文件)。默认为 all.

和查询编辑

警告
在2.0.0弃用。

使用 bool查询。

看到和查询

QueryBuilder query = andQuery(
    rangeQuery("postDate").from("2010-03-01").to("2010-04-01"), //1   
    prefixQuery("name.second", "ba"));                             //2

查询

没有查询编辑

警告
弃用魅惑。

使用 boolQuery()添加了 mustNot()条款。

看到没有查询

QueryBuilder qb = notQuery(
    rangeQuery("price").from("1").to("2")  
);

查询

或查询编辑

警告
在2.0.0弃用。

使用 bool查询。

看到或查询

QueryBuilder qb = orQuery(
    rangeQuery("price").from(1).to(2),  //1
    matchQuery("name", "joe")           //2
);

查询

过滤查询编辑

警告
在2.0.0弃用。

使用 bool查询,而不是用 must查询和条款 filter条款的过滤器。

看到过滤查询.

QueryBuilder qb = filteredQuery(
        matchQuery("name", "kimchy"),         //1              
        rangeQuery("dateOfBirth").from("1900").to("2100")   //2
);

查询将用于得分

查询只会用于过滤结果集

限制查询编辑

看到限制查询

QueryBuilder qb = limitQuery(100);  //1 

每个实例的文档数量




  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值