zoukankan      html  css  js  c++  java
  • ES搜索引擎JAVA API QueryBuilder 基本查询「实用版本」构造举例

    *字段名用fieldName代替,具体值用{fieldValue}代替
     
    1、精确查询(数字或字符串)
    【数字】
    A:单个
    QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    B:批量
    QueryBuilder qb1 = QueryBuilders.termsQuery("${fieldName}", "${fieldValues}");
    字符串
    A:单个
    QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}.keyword", "${fieldValue}");
    B:批量
    QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}.keyword", "${fieldValue}");
     
    2、数值比较
     
    【大于】QueryBuilders.rangeQuery("${fieldName}.").gt(${fieldValue})
    【大于等于】QueryBuilders.rangeQuery("${fieldName}.").gte(${fieldValue})
    【小于】QueryBuilders.rangeQuery("${fieldName}.").lt(${fieldValue})
    【小于等于】QueryBuilders.rangeQuery("${fieldName}.").lte(${fieldValue})
     
    3、脚本使用
    【数值计算】
    String queryStr = "(doc['TICKETPRICE'].value % 50000 == 0)";
    Script script = new Script(queryStr);
    QueryBuilders.scriptQuery(script);
     
    4、模糊查询
     
    【第一种】QueryBuilders.matchPhraseQuery("${fieldName}", "${fieldValue}")
    【第二种,"${fieldValues}”的格式为 a | b | c ,可一次性查询满足a或者b或者c的数据】QueryBuilders.simpleQueryStringQuery("${fieldValues}").field("${fieldName}")
     
    5、模糊查询之组合多条件查询
    elasticsearch提供bool来实现这种需求
     
    主要参数:
    must:文档 必须 匹配这些条件才能被包含进来。
    must_not:文档 必须不 匹配这些条件才能被包含进来。
    should:如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。
    filter:必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。
     
    例子:
    【must】
    //${fieldName} = "${fieldValue}" and ${fieldName} = "${fieldValue}"
    QueryBuilder qf1= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    QueryBuilder qf2= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    QueryBuilder q1 = QueryBuilders.boolQuery().must(qf1).must(q2);
     
    【must not】
    //${fieldName} != "${fieldValue}"
    QueryBuilder q2 = QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    QueryBuilders.boolQuery().mustNot(q2);
     
    【should】
    //${fieldName} = "${fieldValue}" and ${fieldName} = "${fieldValue}"
    QueryBuilder qf1= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    QueryBuilder qf2= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    QueryBuilder q3 = QueryBuilders.boolQuery().should(qf1).should(qf2);
     
     
    陆续还会继续分享,敬请期待~~

  • 相关阅读:
    linux 安全组
    php 类
    linux安装phpmyadmin
    mysql设置对外访问
    linux 防火墙
    微信小程序之swiper组件高度自适应
    Thinkphp5 关联模型
    README.md文件编辑
    linux安装mysql
    小程序返回顶部top滚动
  • 原文地址:https://www.cnblogs.com/wyuan/p/15352918.html
Copyright © 2011-2022 走看看