elasticsearch JAVA客户端操作---搜索的过滤、分组高亮
来源:互联网 发布:linux oracle em打不开 编辑:程序博客网 时间:2024/05/17 00:03
elasticsearch 提供的API比较多,看名字差不多可以明白什么意思
源码地址:源码下载点击
public void search01() {QueryBuilder query = QueryBuilders.queryString("9");// 设置搜索的内容和现实的大小SearchResponse res = client.prepareSearch("test").setQuery(query).setFrom(0).setSize(60).execute().actionGet();SearchHits shs = res.getHits();System.out.println("总共有数据:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 分组fact类似于sql的grouppublic void search02() {// 定义一个分组并为其命名TermsFacetBuilder facetBuilder = FacetBuilders.termsFacet("groupBysex");// 按照哪个字段进行分组facetBuilder.field("sex").size(1);// 过滤器匹配所有文件facetBuilder.facetFilter(FilterBuilders.matchAllFilter());SearchResponse res = client.prepareSearch("test2").setTypes("test02").addFacet(facetBuilder).execute().actionGet();// 获取搜索结果中的分组Facets facet = res.getFacets();// 多个分组是以map的形式存储TermsFacet fac = (TermsFacet) facet.getFacets().get("groupBysex");for (TermsFacet.Entry tf : fac.entries()) {System.out.println(tf.getCount() + "======" + tf.getTerm());}}// QUERYpublic void search03() {// 按照字段进行索引,只要内容含有即可不用全部符合QueryBuilder queryBuilder = QueryBuilders.fieldQuery("name","李四1后面有内容也可以");//整个 数据内容中只要 有 这个字即可QueryBuilder qb =QueryBuilders.queryString("四"); //组合查询 name为 张三,sex为boy的记录 must表示必须有,mustNot表示不包含,should表示可以存在QueryBuilder queryBuilder2 = QueryBuilders.fieldQuery("name","张三");QueryBuilder queryBuilder3 = QueryBuilders.fieldQuery("sex","boy");QueryBuilder qbmust = QueryBuilders.boolQuery().must(queryBuilder2).should(queryBuilder3);//过滤查询QueryBuilder qb3 = QueryBuilders.filteredQuery(queryBuilder2, FilterBuilders.prefixFilter("sex", "bo") );SearchResponse res = client.prepareSearch("test").setTypes("test01").setSearchType(SearchType.DEFAULT).setQuery(qb3).execute().actionGet();SearchHits shs = res.getHits();System.out.println("共查到数据:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 高亮显示public void search04() {//前缀过滤器 汉字不好用FilterBuilder fb = FilterBuilders.prefixFilter("sex", "bo");//范围过滤FilterBuilder fb2 = FilterBuilders.rangeFilter("id").from(1).to(10); //组合过滤FilterBuilder fb3 = FilterBuilders.andFilter( FilterBuilders.rangeFilter("id").from(1).to(10), FilterBuilders.prefixFilter("sex", "bo") ).cache(true);//默认false SearchResponse res = client.prepareSearch("test").setTypes("test01").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setFilter(fb3).execute().actionGet();SearchHits shs = res.hits();System.out.println("总共有数据:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 高亮显示public void search05() {QueryBuilder qb1 = QueryBuilders.termQuery("name", "张三_4");// FilterBuilder filter =FilterBuilders.prefixFilter("name", "张三");SearchResponse res = client.prepareSearch("test4").setTypes("test04").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(QueryBuilders.fieldQuery("id", "1")).addHighlightedField("id").setHighlighterPreTags("<spand>").setHighlighterPostTags("</bod>").execute().actionGet();SearchHits shs = res.hits();System.out.println("总共有数据:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());// 获取对应的高亮域Map<String, HighlightField> result = it.highlightFields();// 从设定的高亮域中取得指定域HighlightField titleField = result.get("id");// 取得定义的高亮标签String[] titleTexts = titleField.fragments();// 为title串值增加自定义的高亮标签String title = "";for (String text : titleTexts) {title += text;}// 将追加了高亮标签的串值重新填充到对应的对象// product.setTitle(title);// 打印高亮标签追加完成后的实体对象System.out.println(title);}}
0 0
- elasticsearch JAVA客户端操作---搜索的过滤、分组高亮
- elasticsearch JAVA客户端操作---搜索的过滤、分组高亮,elasticsearchjava
- elasticsearch JAVA客户端操作---索引的CURD
- 分布式搜索elasticsearch java API 之 highlighting (对搜索结果的高亮显示)
- Elasticsearch(五)elasticsearch高亮搜索
- 使用java客户端操作elasticsearch
- Elasticsearch 5.1.1搜索高亮及Java API实现
- Elasticsearch 5.1.1搜索高亮及Java API实现
- 使用Java实现Elasticsearch的分组功能
- Elasticsearch 2.3.2 java客户端操作
- Elasticsearch 2.3.2 java客户端操作
- Java操作ElasticSearch之创建客户端连接
- elasticsearch的java搜索语法
- ElasticSearch Java分组查询
- Android搜索关键字过滤并高亮
- 使用Elasticsearch的java api,操作elasticsearch
- ElasticSearch学习笔记(九)Java AP实现搜索,排序,高亮,分页
- Elasticsearch-PHP 搜索操作
- Using Scene Builder with NetBeans IDE
- 【Unity3d】学习笔记(9)——写一个计时器工具
- UI开发----UIScrollView和UIPageControl简单模拟滚动视图
- HTML中size和maxlength的区别关系
- Ubuntu下Qt 无法显示菜单栏
- elasticsearch JAVA客户端操作---搜索的过滤、分组高亮
- TCMalloc小记
- 关于抽象类-接口-多态的理解
- 编程之美2.14 求子数组和的最大值(首尾相连)
- Java回调函数的理解
- Fishing
- 用win32 api画圆和椭圆
- 类的相关图解
- Python Pysde 离线文档