java elasticsearch query
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java elasticsearch query,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7749字,纯文字阅读大概需要12分钟。
内容图文
![java elasticsearch query](/upload/InfoBanner/zyjiaocheng/592/be4205488b0e4dfdba456a9c787b89b3.jpg)
import java.io.FileNotFoundException; import java.io.IOException; import org.elasticsearch.action.get.GetRequestBuilder; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.index.query.DisMaxQueryBuilder; import org.elasticsearch.index.query.PrefixQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.RangeQueryBuilder; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.BucketOrder; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.avg.Avg; import org.elasticsearch.search.aggregations.metrics.avg.AvgAggregationBuilder; import org.elasticsearch.search.sort.SortOrder; import org.junit.After; import org.junit.Before; import org.junit.Test; /*** * * @author zhanchaohan * */ public class query { private TransportClient client; private String EsIndex="etest"; private String EsType="doc"; @Before public void init() throws FileNotFoundException, IOException { ElasticConfig ec = new ElasticConfig(); client = ec.init(); } @After public void destroy() { if (client != null) { client.close(); } } // 单条查询 @Test public void test() { GetRequestBuilder getRequestBuilder = client.prepareGet(EsIndex, EsType, "Ps69hGkBfH7K1RnigH-e"); GetResponse getResponse = getRequestBuilder.execute().actionGet(); System.out.println(getResponse.getSourceAsString()); } @Test public void test1() { GetRequestBuilder getRequestBuilder = client.prepareGet(EsIndex, EsType, "Ps69hGkBfH7K1RnigH-e"); GetResponse getResponse = getRequestBuilder.execute().actionGet(); System.out.println(getResponse.getSourceAsString()); } // 全查询 @Test public void test2() { // SearchRequestBuilder // searchRequestBuilder=client.prepareSearch("index"); SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex, "bools");// 多个Index SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); for (SearchHit searchHit : searchResponse.getHits().getHits()) { System.out.println(searchHit.getSourceAsString()); } } /* * 使用QueryBuilder termQuery("key", obj) 完全匹配 termsQuery("key", obj1, obj2..) * 一次匹配多个值 matchQuery("key", Obj) 单个匹配, field不支持通配符, 前缀具高级特性 * multiMatchQuery("text", "field1", "field2"..); 匹配多个字段, field有通配符忒行 * matchAllQuery(); 匹配所有文件 * * ==,!= */ @Test public void test3() { // TermQueryBuilder termQuery = QueryBuilders.termQuery("name", // "zhangsan");//条件查询 // MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("name", // "zhangsan");//匹配查询 PrefixQueryBuilder prefixQuery = QueryBuilders.prefixQuery("name", "zhangsan");// 前缀查询 SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex); DisMaxQueryBuilder disMaxQueryBuilder = QueryBuilders.disMaxQuery() .add(QueryBuilders.matchQuery("name", "zhangsan")).add(QueryBuilders.matchQuery("gent", "男"));// 多查询最大排前 SearchResponse searchResponse = searchRequestBuilder // .setQuery(termQuery) // .setQuery(matchQuery) // .setQuery(prefixQuery) .setQuery(disMaxQueryBuilder).execute().actionGet(); for (SearchHit searchHit : searchResponse.getHits().getHits()) { System.out.println(searchHit.getSourceAsString()); } } /***** * ==,!= <,> <=,>= ?-? */ @Test public void test4() { // BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); // boolQuery.must(QueryBuilders.termQuery("name", "zhangsan0")) // .must(QueryBuilders.termQuery("gent", // "男"));//多个条件同时满足,&&。must(==),mustNot(!=) // BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery(); // boolQuery2.should(QueryBuilders.termQuery("name", "zhangsan0")) // .should(QueryBuilders.termQuery("name", "zhangsan10"));//一个满足则满足,|| // RangeQueryBuilder rangeQueryBuilder = // QueryBuilders.rangeQuery("age").gt("5");//>5 // RangeQueryBuilder rangeQueryBuilder = // QueryBuilders.rangeQuery("age").lt("5");//<5 RangeQueryBuilder rangeQueryBuilder1 = QueryBuilders.rangeQuery("age").from(3).to(6);// 3-6所有 SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex); SearchResponse searchResponse = searchRequestBuilder // .setQuery(boolQuery) // .setQuery(boolQuery2) // .setQuery(rangeQueryBuilder) .setQuery(rangeQueryBuilder1).addSort("age", SortOrder.DESC)// 排序 .execute().actionGet(); for (SearchHit searchHit : searchResponse.getHits().getHits()) { System.out.println(searchHit.getSourceAsString()); } } /**** * 单分组 * https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_bucket_aggregations.html */ @Test public void test5() { SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex); TermsAggregationBuilder teamAgg = AggregationBuilders.terms("region_s").field("region.keyword");// 分组 SearchResponse searchResponse = searchRequestBuilder.addAggregation(teamAgg).execute().actionGet(); Aggregations aggregations = searchResponse.getAggregations(); Terms terms = aggregations.get("region_s"); for (Bucket bucket : terms.getBuckets()) { System.out.println(bucket.getKey() + "\t\t" + bucket.getDocCount()); } } // 多个分组 @Test public void test6() { SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex); TermsAggregationBuilder teamAgg = AggregationBuilders.terms("region_s").field("region.keyword");// 分组 TermsAggregationBuilder gentAgg = AggregationBuilders.terms("gent_s").field("gent.keyword") .order(BucketOrder.count(true));// 分组,排序 SearchResponse searchResponse = searchRequestBuilder.addAggregation(teamAgg.subAggregation(gentAgg)).execute() .actionGet(); Aggregations aggregations = searchResponse.getAggregations(); Terms terms = aggregations.get("region_s"); Terms terms2; for (Terms.Bucket bucket : terms.getBuckets()) { System.out.println("地区=" + bucket.getKey()); terms2 = bucket.getAggregations().get("gent_s"); for (Terms.Bucket bucket2 : terms2.getBuckets()) { System.out.println("性别=" + bucket2.getKey() + ";个数=" + bucket2.getDocCount()); } } } // 取分组最大值,最小值,平均值 // https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_metrics_aggregations.html @Test public void test7() { SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsIndex); TermsAggregationBuilder teamAgg = AggregationBuilders.terms("region_s").field("region.keyword");// 分组 // MaxAggregationBuilder ageAgg = AggregationBuilders.max("age_s").field("age"); // MinAggregationBuilder ageAgg=AggregationBuilders.min("age_s").field("age"); AvgAggregationBuilder avgAgg = AggregationBuilders.avg("age_s").field("age"); SearchResponse searchResponse = searchRequestBuilder.addAggregation(teamAgg.subAggregation(avgAgg)).execute() .actionGet(); Aggregations aggregations = searchResponse.getAggregations(); Terms terms = aggregations.get("region_s"); // Max max; // Min min; Avg avg; for (Terms.Bucket bucket : terms.getBuckets()) { System.out.println("地区=" + bucket.getKey()); // max = bucket.getAggregations().get("age_s"); // System.out.println("最大数据名称="+max.getName()); // System.out.println("最大数据值="+max.getValue()); // min=bucket.getAggregations().get("age_s"); // System.out.println("最小数据名称="+min.getName()); // System.out.println("最小数据值="+min.getValue()); avg = bucket.getAggregations().get("age_s"); System.out.println("平均数据名称=" + avg.getName()); System.out.println("平均数据值=" + avg.getValue()); } } }
内容总结
以上是互联网集市为您收集整理的java elasticsearch query全部内容,希望文章能够帮你解决java elasticsearch query所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。