elasticseacth基础操作--QueryBuilders的使用

QueryBuilder 是es中提供的一个查询接口, 可以对其进行参数设置来进行数据查询

1.termQuery("key",obj)完全匹配

QueryBuilders.termQuery("name","v1");

2.termsQuery("key",obj1,obj2...)一次匹配多值

QueryBuilders.termsQuery("name","v1","v2","v3");

3.matchQuery("key",obj)单个匹配,field不支持通配符,前缀具有高级特性

4.multiMatchQuery("text","field1","field2",...)匹配多个字段,field有通配符

5.matchAllQuery();匹配所有文件

mathcQuery与termQuery区别:

matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。

termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到。

 

组合查询

6.must(QueryBuilders): AND

7.mustNot(QueryBUilders):NOT

8.should :OR

QueryBuilders
            .boolQuery()
            .must(QueryBuilders.termQuery("name","Hello"))
            .mustNot(QueryBuilders.termQuery("isEnable",true))
            .should(QueryBuilders.termQuery("age","233"));

 

9.只根据id查询

QueryBuilders.idsQuery(String ..type).ids(Collection<String>ids);

QueryBuilders.idsQuery().ids("CHszwWRURyK08j01p0Mmug", "ojGrYKMEQCCPvh75lHJm3A");

 

10.范围查询

QueryBuilder queryBuilder = QueryBuilders.rangeQuery("user")
.from("kim")
.to("lucy")
.includeLower(true) //包含上界
.includeUpper(true); //包含下届

11.通配符查询(支持* 匹配任何字符序列,包括空 避免*开始,会检索大量内容造成效率缓慢)

QueryBuilder queryBuilder = QueryBuilders.wildcardQuery("user","he*o");

12.分词 模糊查询 fuzzy query

QueryBuilders.fuzzyQuery("name","hello");

13.前缀匹配查询 prefix query

QueryBuilders.prefixQuery("name","hello");

14.嵌套查询

QueryBuilders.nestedQuery("policy", //path
            QueryBuilders.boolQuery()   // Your query
                .must(QueryBuilders.termQuery("name", "hello"))
                .must(QueryBuilders.rangeQuery("age").lt("23"))
            ,ScoreMode.None);// max,total,avg,none

public static NestedQueryBuilder nestedQuery(String path, QueryBuilder query, ScoreMode scoreMode) {
return new NestedQueryBuilder(path, query, scoreMode);
}

 

转载于:https://www.cnblogs.com/cangshublogs/p/11156461.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值