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);
     
     
    陆续还会继续分享,敬请期待~~

  • 相关阅读:
    (winform cookie)如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
    NBear官方MSN群
    NBear 支持基于操作符重载的强类型Where及OrderBy查询
    NBear视频 0.1 NBear类库结构及功能简介[发布时间:9/5]
    NBear 使用Entity Configurator设置实体元数据、生成数据库创建脚本
    ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
    实例解析继承体系重构及ORM映射
    NBearV2.1.0,新增Oracle和MySql Db Provider,诚征测试
    NBear视频 1.1 实体定义基础[发布时间:9/5]
    使用主动实体(ActiveEntity)简化继承体系映射类的写操作
  • 原文地址:https://www.cnblogs.com/wyuan/p/15352918.html
Copyright © 2011-2022 走看看