• Elasticsearch的javaAPI之query dsl-queries


    Elasticsearch的javaAPI之query dsl-queries


    和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl

    查询建造者(factory)是 QueryBuilders 。 一旦准备好您的查询,您能够使用query api

    怎样使用QueryBuilders?只就是增加以下的包:

    import org.elasticsearch.index.query.QueryBuilders.*;

    请注意,您能够轻松地打印(又名调试) 查询生成的JSON,用 toString()方法

     QueryBuilder 能够用于接受查询,的不论什么API(如countsearch


    以下例举几种经常使用查询API:

    Match Query

    QueryBuilder qb = QueryBuilders.matchQuery("name", "kimchy elasticsearch");

    MultiMatch Query

    QueryBuilder qb = QueryBuilders.multiMatchQuery(
        "kimchy elasticsearch",     // Text you are looking for
        "user", "message"           // Fields you query on
        );

    Boolean Query

    QueryBuilder qb = QueryBuilders
                        .boolQuery()
                        .must(termQuery("content", "test1"))
                        .must(termQuery("content", "test4"))
                        .mustNot(termQuery("content", "test2"))
                        .should(termQuery("content", "test3"));

    Boosting Query

    QueryBuilders.boostingQuery()
                .positive(QueryBuilders.termQuery("name","kimchy"))
                .negative(QueryBuilders.termQuery("name","dadoonet"))
                .negativeBoost(0.2f);

    Range Query

    QueryBuilder qb = QueryBuilders
                        .rangeQuery("price")
                        .from(5)
                        .to(10)
                        .includeLower(true)
                        .includeUpper(false);

    QueryString Query

    QueryBuilder qb = QueryBuilders.queryString("+kimchy -elasticsearch");

    Term Query

    QueryBuilder qb = QueryBuilders.termQuery("name", "kimchy");
    
    

    More Like This (Field) Query (mlt and mlt_field)

    // mlt Query
    QueryBuilders.moreLikeThisQuery("name.first", "name.last")      // Fields
                    .likeText("text like this one")                 // Text
                    .minTermFreq(1)                                 // Ignore Threshold
                    .maxQueryTerms(12);                             // Max num of Terms
                                                                    // in generated queries
    
    // mlt_field Query
    QueryBuilders.moreLikeThisFieldQuery("name.first")              // Only on single field
                    .likeText("text like this one")
                    .minTermFreq(1)
                    .maxQueryTerms(12);



  • 相关阅读:
    【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法(讲的非常容易理解哦)
    关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
    js面向对象高级编程
    js面向对象的几种设计模式,以及实现继承的几种方式
    解析Vue2.0和3.0的响应式原理和异同(带源码)
    总结js的几种数据类型检测方法
    javascript中Array常用方法,以及String的常用方法处理
    从输入URL到浏览器显示页面发生了什么,一个完整的http请求过程
    web前端如何防范安全攻击
    前端seo优化总结
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7285852.html
Copyright © 2020-2023  润新知