ElasticSearchTemplate简单查询Queries操作(二)

一、所使用版本的介绍

使用的是elasticsearch5.4.6版本,在此只是简单介绍搜索部分的api使用。

二、搜索时api的实现

 1、Match Query 单个字段匹配查询(接受文本/数值/日期)

a、方法:matchQuery(String name, Object text);

b、实例如下:

QueryBuilder qb = QueryBuilders.matchQuery("name", "kimchy elasticsearch");//name是field,kimchy elasticsearch是要查询的字符串

QueryBuilder qb = QueryBuilders.matchQuery("name", object);//name是field,object是要查询的对象(如:list,object等)

注:匹配一个field,field不支持通配符

QueryBuilder qb = QueryBuilders.matchPhraseQuery("title""molong1208 blog");

2、MultiMatch Query 多个字段匹配查询

a、方法:multiMatchQuery(Object text, String... fieldNames);

b、实例如下:

    QueryBuilder qb = QueryBuilders.multiMatchQuery(

//kimchy elasticsearch是要查询的字符串

"kimchy elasticsearch"

//user 和 message都是field

"user", "message");

注:匹配多个字段, field有通配符忒行

3、Boolean Query 匹配与其他查询的布尔组合匹配的文档的查询

a、方法:new BoolQueryBuilder()
b、实例如下:

QueryBuilder qb = QueryBuilders.boolQuery()

                .must(QueryBuilders.termQuery("content", "test1"))

                .must(QueryBuilders.termQuery("content", "test4"))

                .mustNot(QueryBuilders.termQuery("content", "test2"))

                .should(QueryBuilders.termQuery("content", "test3")).minimumShouldMatch(1);

注:如果bool查询语句中不存在must,则必须至少有一个should查询,同时可以通过minimum_should_match参数来设置至少需要满足的should个数.

4、Boosting Query Boosting查询可用于有效地匹配与给定查询匹配的结果。与布尔查询中的“不”子句不同,它仍然选择包含不希望的术语的文档,但是降低了它们的总得分。

a、方法:boostingQuery(QueryBuilder positiveQuery, QueryBuilder negativeQuery)

b、实例如下:

QueryBuilder qb = QueryBuilders.boostingQuery(

    QueryBuilders.termQuery("field1", "3"), //希望包含的

    QueryBuilders.termQuery("field2", "fff"))//包含不希望的

    .negativeBoost(0.2f);//设置满足negativeQuery精度

5、Terms Query  一次完全匹配多个值

a、方法:termsQuery(String name, String... values),

        termsQuery(String name, int... values),

        termsQuery(String name, long... values),

        termsQuery(String name, float... values),

        termsQuery(String name, double... values),

        termsQuery(String name, Object... values),

        termsQuery(String name, Collection<?> values)


b、实例如下:

    QueryBuilder qb1 = QueryBuilders.termsQuery("key","22","33");

        List<String> list = new LockFreeVector<String>();

        list.add("22");

        list.add("33");

    QueryBuilder qb2 = QueryBuilders.termsQuery("key",list);

    QueryBuilder qb3 = QueryBuilders.boolQuery()

         .must(new QueryStringQueryBuilder("233").field("title"))

         .must(QueryBuilders.termsQuery("key","22","33"))

         .must(QueryBuilders.boolQuery() 

         .should(QueryBuilders.termsQuery("title","s"))

         .should(QueryBuilders.termsQuery("code", "小李子")).minimumShouldMatch(2));

注:如果bool查询语句中不存在must,则必须至少有一个should查询,同时可以通过minimum_should_match参数来设置至少需要满足的should个数.

6、 Term Query 单个字段匹配查询

a、方法:termsQuery(String name, String values),

        termsQuery(String nameint  values),

        termsQuery(String namelong values),

        termsQuery(String namefloat  values),

        termsQuery(String namedouble  values),

        termsQuery(String name, Object values)

b、实例如下:QueryBuilder qb1 = QueryBuilders.termQuery("key","22");


7、  根据文档一个或多个ID查询

a、方法:idsQuery().addIds(String... types),

          idsQuery(String... types)

b、实例如下:

QueryBuilder qb = QueryBuilders.idsQuery("34","12"),

QueryBuilder qb = QueryBuilders.idsQuery().addIds("34","12")

8、Match All Query  全部匹配

a、方法:matchAllQuery();

b、实例如下:

 QueryBuilder qb = QueryBuilders.matchAllQuery();


后续有时间继续补充。。。

 Custom Filters Score Query 

 Custom Score Query 

  Custom Boost Factor Query

Constant Score Query 

 Dis Max Query

 Field Query  

 Filtered Query 

  Fuzzy Like This Query

  Fuzzy Like This Field Query

  Function Score Query  

 Fuzzy Query

 GeoShape Query

  Has Child Query

 Has Parent Query

  Indices Query

  More Like This Query 

  More Like This Field Query

 Nested Query

 Prefix Query 

  Query String Query  

  Simple Query String Query

  Range Query 

 Regexp Query

  Span First Query

 Span Multi Term Query

  Span Near Query

  Span Not Query

 Span Or Query

  Span Term Query

 Top Children Query

  Wildcard Query  

  Text Query

  Minimum Should Match 

  Multi Term Query Rewrite

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值