elasticsearch搜索条件

elasticsearch搜索条件

1.组合条件

  • filter:过滤条件
  • must:and
  • should: OR
  • mustNot:not

2.查询QueryBuilders

2.1 完全匹配(termQuery、termsQuery

	QueryBuilders.termQuery(key, value)   //一个key匹配一个值,完全匹配
    QueryBuilders.termsQuery(key, value1, value2..)   //一个key匹配多个值

2.2 单字段匹配(matchQuery

	QueryBuilders.matchQuery(key, value)

2.3 多字段匹配(multiMatchQuery

	QueryBuilders.multiMatchQuery(value, key1, key2, key3..)  

2.4 字段分词匹配(matchPhraseQuery 必须在分词中都包含,而且顺序相同,默认必须都是连续的)

	QueryBuilders.matchPhraseQuery(key, value)

2.5 模糊查询(wildcardQuery) ?匹配单个字符,*匹配多个字符

	QueryBuilders.wildcardQuery(key, "*手机?")

2.6 范围查询(rangeQuery) from:相当于闭区间,to:开区间; gt:相当于开区间(>),gte:相当于闭区间 (>=),lt:开区间(<),lte:闭区间 (<=)

    QueryBuilders.rangeQuery(key).from(value1).to(vaule2)
    QueryBuilders.rangeQuery(key).gte(value)

2.7 子查询 (nestedQuery)

	QueryBuilders.nestedQuery("key1",
                           QueryBuilders.matchPhraseQuery("key1.key2", value),
                           ScoreMode.Max))

3.构建查询条件

    BoolQueryBuilder builder = QueryBuilders.boolQuery();
    builder.filter(QueryBuilders.termQuery("state", 1))
           .must(QueryBuilders.multiMatchQuery("浮光", "name", "nick_name"))
           .should(QueryBuilders.matchQuery("sex", 1))
           .mustNot(QueryBuilders.rangeQuery("age").gte(25))
   
   //专辑名,简介或者专辑标签中查询,标签是内部对象数组格式 labels:[{"name":""},{"name":""}]
    BoolQueryBuilder albumBuilder = QueryBuilders.boolQuery();
	BoolQueryBuilder albumQuery = QueryBuilders.boolQuery();
    albumQuery.should(QueryBuilders.multiMatchQuery("专辑1", "name", "introduce")
    							   .analyzer("ik_max_word")
                				   .operator(Operator.OR);)
              .should(QueryBuilders.nestedQuery("labels",
                            	QueryBuilders.matchPhraseQuery("labels.name", key),
                            	ScoreMode.Max));
    albumBuilder.must(albumQuery);

3.1 ScoreMode枚举

  • Avg:父命中的分数是所有子分数的平均值
  • Max:父命中的分数是所有子分数的最大值
  • Min:父命中的分数是所有子分数的最小值
  • None:不得分
  • Total:父命中的分数是所有子分数的总和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值