Elasticsearch Java API 的使用—多条件查询
2018-03-21 15:32
411 查看
//多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders .matchPhraseQuery("pointid","W3.UNIT1.10LBG01CP301"); MatchPhraseQueryBuilder mpq2 = QueryBuilders .matchPhraseQuery("inputtime","2016-07-21 00:00:01"); QueryBuilder qb2 = QueryBuilders.boolQuery().must(mpq1).must(mpq2); 实现多条件查询 public class EsBool{ public void BoolSearch(TransportClient client){ //多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders .matchPhraseQuery("pointid","W3.UNIT1.10LBG01CP301"); MatchPhraseQueryBuilder mpq2 = QueryBuilders .matchPhraseQuery("inputtime","2016-07-21 00:00:01"); QueryBuilder qb2 = QueryBuilders.boolQuery() .must(mpq1) .must(mpq2); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(qb2); //System.out.println(sourceBuilder.toString()); //查询建立 SearchRequestBuilder responsebuilder = client .prepareSearch("pointdata").setTypes("pointdata"); SearchResponse myresponse=responsebuilder .setQuery(qb2) .setFrom(0).setSize(50) .addSort("inputtime", SortOrder.ASC) //.addSort("inputtime", SortOrder.DESC) .setExplain(true).execute().actionGet(); SearchHits hits = myresponse.getHits(); for(int i = 0; i < hits.getHits().length; i++) { System.out.println(hits.getHits()[i].getSourceAsString()); } } }
@Test public void testSearch() { String index="index_log_daily"; String type="uq_log"; String uquestion = "139"; String province = "江苏"; SearchResponse searchResponse = client.prepareSearch(index) .setTypes(type) .setQuery(QueryBuilders.matchAllQuery()) //查询所有 .setQuery(QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("uquestion", uquestion))//查询uquestion为139的 .must(QueryBuilders.matchQuery("province", province)))//查询省份为江苏的 //.setQuery(QueryBuilders.matchQuery("uquestion", "12599").operator(Operator.AND)) //根据tom分词查询name,默认or //.setQuery(QueryBuilders.matchQuery("province", "江苏").operator(Operator.AND)) //根据tom分词查询name,默认or //.setQuery(QueryBuilders.multiMatchQuery("tom", "name", "age")) //指定查询的字段 //.setQuery(QueryBuilders.queryString("name:to* AND age:[0 TO 19]")) //根据条件查询,支持通配符大于等于0小于等于19 //.setQuery(QueryBuilders.termQuery("name", "tom"))//查询时不分词 .setSearchType(SearchType.QUERY_THEN_FETCH) .setFrom(0).setSize(10)//分页 //.addSort("age", SortOrder.DESC)//排序 .get(); SearchHits hits = searchResponse.getHits(); long total = hits.getTotalHits(); System.out.println(total); SearchHit[] searchHits = hits.hits(); for(SearchHit s : searchHits) { System.out.println(s.getSourceAsString()); String []logindex=s.getSourceAsString().split(","); } }
相关文章推荐
- Elasticsearch Java API 的使用(7)—多条件查询
- ElasticsearchTemplate的详细使用,完成多条件查询、匹配度查询等
- ElasticsearchTemplate的详细使用,完成多条件查询、匹配度查询等
- Elasticsearch Java API 的使用(5)—时间范围查询
- Elasticsearch Java API—多条件查询(must)
- 分布式搜索elasticsearch java API 之(八)------使用More like this实现基于内容的推荐
- 使用AspNetPager进行分页,查询条件丢失问题
- spring data jpa .基本使用,多条件复合查询,报表查询。
- ElasticSearch java API - 聚合查询
- morphia中查询时,使用关键字 in 的条件
- SharePoint 2010 使用代码创建视图查询条件
- Elasticsearch 5.X下JAVA API使用指南
- 使用HQL查询符合条件的前n行语句
- EasyUI使用心得——datagrid的条件查询的中文化
- 关于使用hbase进行多维度条件实时查询的方案调研。
- Hibernate 使用 HQL 查询 使用List 作为查询条件的注意(也是相当于别名查询)
- 使用Luence的分布式搜索引擎ElasticSearch搜索实例演示(Java API)
- Ext.Net 使用总结之查询条件中的起始日期
- mysql字段使用非int做主键,查询时候使用整型和字符串做查询条件的区别
- elasticsearch java api 使用ik 分词器