elasticsearch__4__java操作之QueryBuilders构建搜索Query



elasticsearch 分布式搜索系列专栏:http://blog.csdn.net/xiaohulunb/article/category/2399789

内容涉及代码GitHub地址: 点击打开链接



官方API:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html






 @NotSolved未解决


[java]  view plain   copy
  1. package com.elasticsearch;  
  2.   
  3. import org.elasticsearch.action.ActionListener;  
  4. import org.elasticsearch.action.search.SearchResponse;  
  5. import org.elasticsearch.index.query.IndicesQueryBuilder;  
  6. import org.elasticsearch.index.query.QueryBuilder;  
  7. import org.elasticsearch.index.query.QueryBuilders;  
  8.   
  9. /** 
  10.  * Created by lw on 14-7-15. 
  11.  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  12.  * elasticsearch以提供了一个完整的Java查询dsl其余查询dsl。 
  13.  * QueryBuilders工厂构建 
  14.  * API: 
  15.  * <a>http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/query-dsl-queries.html</a> 
  16.  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  17.  */  
  18. public class Es_QueryBuilders_DSL {  
  19.   
  20.     /** 
  21.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  22.      * match query 单个匹配 
  23.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  24.      */  
  25.     protected static QueryBuilder matchQuery() {  
  26.         return QueryBuilders.matchQuery("name""葫芦4032娃");  
  27.     }  
  28.   
  29.   
  30.     /** 
  31.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  32.      * multimatch  query 
  33.      * 创建一个匹配查询的布尔型提供字段名称和文本。 
  34.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  35.      */  
  36.     protected static QueryBuilder multiMatchQuery() {  
  37.         //现住址和家乡在【山西省太原市7429街道】的人  
  38.         return QueryBuilders.multiMatchQuery(  
  39.                 "山西省太原市7429街道",     // Text you are looking for  
  40.                 "home""now_home"       // Fields you query on  
  41.         );  
  42.     }  
  43.   
  44.     /** 
  45.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  46.      * boolean query and 条件组合查询 
  47.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  48.      */  
  49.     protected static QueryBuilder booleanQuery() {  
  50.   
  51.         return QueryBuilders  
  52.                 .boolQuery()  
  53.                 .must(QueryBuilders.termQuery("name""葫芦3033娃"))  
  54.                 .must(QueryBuilders.termQuery("home""山西省太原市7967街道"))  
  55.                 .mustNot(QueryBuilders.termQuery("isRealMen"false))  
  56.                 .should(QueryBuilders.termQuery("now_home""山西省太原市"));  
  57.     }  
  58.   
  59.     /** 
  60.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  61.      * ids query 
  62.      * 构造一个只会匹配的特定数据 id 的查询。 
  63.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  64.      */  
  65.     protected static QueryBuilder idsQuery() {  
  66.         return QueryBuilders.idsQuery().ids("CHszwWRURyK08j01p0Mmug""ojGrYKMEQCCPvh75lHJm3A");  
  67.     }  
  68.   
  69.     /** 
  70.      * TODO NotSolved 
  71.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  72.      * constant score query 
  73.      * 另一个查询和查询,包裹查询只返回一个常数分数等于提高每个文档的查询。 
  74.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  75.      */  
  76.     protected static QueryBuilder constantScoreQuery() {  
  77.         /*return // Using with Filters 
  78.                 QueryBuilders.constantScoreQuery(FilterBuilders.termFilter("name", "kimchy")) 
  79.                         .boost(2.0f);*/  
  80.   
  81.         // With Queries  
  82.         return QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("name""葫芦3033娃"))  
  83.                 .boost(2.0f);  
  84.     }  
  85.   
  86.     /** 
  87.      * TODO NotSolved 
  88.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  89.      * disjunction max query 
  90.      * 一个生成的子查询文件产生的联合查询, 
  91.      * 而且每个分数的文件具有最高得分文件的任何子查询产生的, 
  92.      * 再加上打破平手的增加任何额外的匹配的子查询。 
  93.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  94.      */  
  95.     protected static QueryBuilder disMaxQuery() {  
  96.         return QueryBuilders.disMaxQuery()  
  97.                 .add(QueryBuilders.termQuery("name""kimchy"))          // Your queries  
  98.                 .add(QueryBuilders.termQuery("name""elasticsearch"))   // Your queries  
  99.                 .boost(1.2f)  
  100.                 .tieBreaker(0.7f);  
  101.     }  
  102.   
  103.     /** 
  104.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  105.      * fuzzy query 
  106.      * 使用模糊查询匹配文档查询。 
  107.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  108.      */  
  109.     protected static QueryBuilder fuzzyQuery() {  
  110.         return QueryBuilders.fuzzyQuery("name""葫芦3582");  
  111.     }  
  112.   
  113.     /** 
  114.      * TODO NotSolved 
  115.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  116.      * has child / has parent 
  117.      * 父或者子的文档查询 
  118.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  119.      */  
  120.     protected static QueryBuilder hasChildQuery() {  
  121.         return // Has Child  
  122.                 QueryBuilders.hasChildQuery("blog_tag",  
  123.                         QueryBuilders.termQuery("tag""something"));  
  124.   
  125.         // Has Parent  
  126.         /*return QueryBuilders.hasParentQuery("blog", 
  127.                 QueryBuilders.termQuery("tag","something"));*/  
  128.     }  
  129.   
  130.     /** 
  131.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  132.      * matchall query 
  133.      * 查询匹配所有文件。 
  134.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  135.      */  
  136.     protected static QueryBuilder matchAllQuery() {  
  137.         return QueryBuilders.matchAllQuery();  
  138.     }  
  139.   
  140.     /** 
  141.      * TODO NotSolved 
  142.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  143.      * more like this (field) query (mlt and mlt_field) 
  144.      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值