ElasticSearch(四)
来源:互联网 发布:dota2数据分析师 编辑:程序博客网 时间:2024/06/06 02:22
ElasticSearch(四)
1.search操作
注意 mapping 设置 分词器不同 查询结果也会不同
SearchResponse response = client.prepareSearch("index") .setTypes("fulltext") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.matchQuery("content", "中国")) .setExplain(true)//按查询匹配度排序 .get(); SearchHits searchHits = response.getHits(); SearchHit[] hits = searchHits.getHits(); for (SearchHit hit : hits) { Map<String, Object> source = hit.getSource(); for (Map.Entry<String, Object> entry : source.entrySet()) { System.out.println(entry.getKey()+":"+entry.getValue()); } }
2.Search 高亮显示
HighlightBuilder builder = new HighlightBuilder() .field("content").preTags("<font color='red'>").postTags("</font>"); SearchResponse response = client.prepareSearch("inde") .setTypes("fulltext") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setExplain(true) .setQuery(QueryBuilders.matchQuery("content", "中国")) .highlighter(builder) .get(); SearchHits searchHits = response.getHits(); SearchHit[] hits = searchHits.getHits(); for (SearchHit hit : hits) { System.out.println("非高亮:"+hit.getSourceAsString()); Map<String, HighlightField> highlightFields = hit.getHighlightFields(); for (Map.Entry<String, HighlightField> entry : highlightFields.entrySet()) { System.out.println(entry.getKey()+":"+entry.getValue()); } }
2.Aggregations 分组筛选统计 用于数据的分析
注意 5.x版本 需要在设置mapping是 对分组的字段设置 fielddata:true 官网有提醒
/** * Aggregation.terms 根据某个字段进行分组 统计数量 */ @org.junit.Test public void aggregation(){ SearchResponse response = client.prepareSearch("love") .setTypes("user") .addAggregation(AggregationBuilders.terms("group") .field("address").size(Integer.MAX_VALUE) ) .setSize(100) .get(); Terms terms = response.getAggregations().get("group"); Terms.Bucket 北京 = terms.getBucketByKey("北京"); System.out.println("住在北京的有:"+北京.getDocCount()); List<? extends Terms.Bucket> buckets = terms.getBuckets(); for (Terms.Bucket bucket : buckets) { System.out.println(bucket.getKey()+" : "+bucket.getDocCount()); } SearchHits searchHits = response.getHits(); System.out.println("总数:"+searchHits.getTotalHits()); SearchHit[] hits = searchHits.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); } } /** * Aggregation 最小值 */ @Test public void aggregation2(){ SearchResponse response = client.prepareSearch("love").setTypes("user") .addAggregation(AggregationBuilders.min("group") .field("age") ).get(); Min min = response.getAggregations().get("group"); System.out.println(min.getValue()); } /** * Aggregation 最大值 */ @Test public void aggregation3(){ SearchResponse response = client.prepareSearch("love").setTypes("user") .addAggregation(AggregationBuilders.max("group") .field("age") ).get(); Max max = response.getAggregations().get("group"); System.out.println(max.getValue()); } /** * Aggregation 求和 */ @Test public void aggregation4(){ SearchResponse response = client.prepareSearch("love") .setTypes("user").addAggregation( AggregationBuilders.sum("group") .field("age") ).get(); Sum sum = response.getAggregations().get("group"); System.out.println(sum.getValue()); } /** * Aggregation 统计 */ @Test public void aggregation5(){ SearchResponse response = client.prepareSearch("love") .setTypes("user").addAggregation( AggregationBuilders.stats("group") .field("age") ).get(); Stats stat = response.getAggregations().get("group"); System.out.println("年龄平均值:"+stat.getAvg()); System.out.println("年龄最大值:"+stat.getMax()); System.out.println("年龄最小值:"+stat.getMin()); System.out.println("年龄求和:"+stat.getSum()); System.out.println("年龄数量:"+stat.getCount()); }
//还有一些其他的 用的时候再去官网看api吧
阅读全文
0 0
- Elasticsearch学习(四)
- ElasticSearch(四):查询
- ElasticSearch(四)
- Elasticsearch(四)elasticsearch复杂检索
- (四)ElasticSearch索引创建
- ElasticSearch(四)--分布式文档存储
- ElasticSearch 攻略(四)简易搜索
- ElasticSearch(四)-分布式文档存储
- elasticsearch源码分析之服务端(四)
- elasticsearch源码分析之服务端(四)
- Elasticsearch(四)-映射和分析
- ElasticSearch使用教程四(ElasticSearch查询详解)
- ElasticSearch使用教程四(ElasticSearch查询详解)
- Elasticsearch(四)【Elasticsearch.Net之Post数据】
- mesos和Elasticsearch设计(Docker部署)(四)
- ElasticSearch源码解析(四):检索(Search)
- 分布式搜索Elasticsearch——创建客户端(四)
- 分布式搜索Elasticsearch——创建客户端(四)
- 散列集(HashSet)、映射
- windows下-phpstrom下搜狗输入法光标不一致的解决方案
- Jackson进行JSON解析和序列化
- 版本差异对比(二) -- 文件的MD5算法
- 传统接口写法与Restful API 区别
- ElasticSearch(四)
- windows nginx启动bat命令,配置一些就可以直接双击控制
- 使用Linux的环境变量
- SSH 连接 Linux 服务 报错 server responded algorithm negotition
- jQuery实现Checkbox全选功能
- 线程同步问题
- 3342 数据结构实验之二叉树三:统计叶子数
- 【loli的胡策】联校11.1(乱搞)
- Inno Setup入门(一)——最简单的安装脚本