zoukankan      html  css  js  c++  java
  • Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769

    Elasticsearch java api 常用查询方法QueryBuilder构造举例

    环境

    Elasticsearch版本

    5.1.1

    pom

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.1.1</version>
    </dependency>

    Elasticsearch索引方式

    数字

    {
        "type": "long"
    }
    

    字符串

    {
        "type": "text",
        "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
            }
        }
    }
    

    精确查询

    以下字段名用${fieldName}代替,具体值用${fieldValue}代替

    数字

    单个

    QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
    

    批量

    QueryBuilder qb1 = QueryBuilders.termsQuery("${fieldName}", "${fieldValues}");
    

    字符串

    单个

    QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}.keyword", "${fieldValue}");
    

    批量

    QueryBuilder qb1 = QueryBuilders.termsQuery("${fieldName}.keyword", "${fieldValues}");
    

    模糊查询

    数字

    数字查询都为精确查询

    字符串

    QueryBuilder qb1 = QueryBuilders.moreLikeThisQuery(new String[]{"${fieldName}"}, new String[]{"${fieldValue}"}, null);
    

    范围查询

    数字

    闭区间查询

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}).to(${fieldValue2});
    

    开区间查询

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}, false).to(${fieldValue2}, false);
    

    大于

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").gt(${fieldValue});
    
     

    大于等于

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").gte(${fieldValue});
    
     

    小于

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").lt(${fieldValue});
    

    小于等于

    QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").lte(${fieldValue});
    
     

    多条件查询

    QueryBuilder qb1 = QueryBuilders.moreLikeThisQuery(new String[]{"${fieldName1}"}, new String[]{"${fieldValue1}"}, null);
    QueryBuilder qb2 = QueryBuilders.rangeQuery("${fieldName2}").gt("${fieldValue2}");
    QueryBuilder qb3 = QueryBuilders.boolQuery().must(qb1).must(qb2);
    

  • 相关阅读:
    基于Tire树和最大概率法的中文分词功能的Java实现
    通过 Spring RestTemplate 调用带请求体的 Delete 方法(Delete With Request Body)
    《高效能程序员的修炼》之译者序(本书将于7月初上市,人民邮电出版社)
    JVM类加载过程学习总结
    Web安全之Cookie劫持
    2016第40周五
    年轻By塞缪尔·厄尔曼
    2016第40周三
    2016第40周二
    果断歌
  • 原文地址:https://www.cnblogs.com/IT-study/p/7988525.html
Copyright © 2011-2022 走看看