ElasticSearch入门-搜索(java api)

package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.JSONObject;import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.highlight.HighlightField;import com.qlyd.business.newsinfo.po.NewsInfo;
import com.qlyd.common.QlydConstants;
import com.qlyd.utils.ESTools;
import com.qlyd.utils.JsonUtils;
/*** * * @类编号:* @类名称:ElasticSearchHandler* @内容摘要: //搜索控制类* @author:鹿伟伟* @创建日期:2016年3月22日 下午3:26:52* @修改人:* @修改日期:* @修改描述:简单描述修改的内容* @version 1.0.0**/
public class ElasticSearchHandler {private Client client = ESTools.getClient();public void searcher(String key, String indexId, String type) {try {// 创建查询索引,参数productindex表示要查询的索引库为productindexSearchRequestBuilder searchRequestBuilder = client.prepareSearch(indexId);// 设置查询索引类型,setTypes("productType1", "productType2","productType3");// 用来设定在多个类型中搜索searchRequestBuilder.setTypes(type);// 设置查询类型 1.SearchType.DFS_QUERY_THEN_FETCH = 精确查询 2.SearchType.SCAN// = 扫描查询,无序searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);// 设置查询关键词searchRequestBuilder.setQuery(QueryBuilders.termQuery("title", key));// // 查询过滤器过滤价格在4000-5000内// 这里范围为[4000,5000]区间闭包含,搜索结果包含价格为4000和价格为5000的数据// searchRequestBuilder.setFilter(FilterBuilders.rangeFilter("price")// .from(4000).to(5000));//// // 分页应用// searchRequestBuilder.setFrom(0).setSize(3);// 设置是否按查询匹配度排序searchRequestBuilder.setExplain(true);// 设置高亮显示searchRequestBuilder.addHighlightedField("title");searchRequestBuilder.setHighlighterPreTags("<span style=\"color:red\">");searchRequestBuilder.setHighlighterPostTags("</span>");// 执行搜索,返回搜索响应信息SearchResponse response = searchRequestBuilder.execute().actionGet();
//          System.out.println(response.toString());// 获取搜索的文档结果SearchHits searchHits = response.getHits();SearchHit[] hits = searchHits.getHits();// ObjectMapper mapper = new ObjectMapper();for (int i = 0; i < hits.length; i++) {SearchHit hit = hits[i];// 将文档中的每一个对象转换json串值String json = hit.getSourceAsString();// 将json串值转换成对应的实体对象// Product product = mapper.readValue(json, Product.class);NewsInfo newsInfo = JsonUtils.readToObject(json, NewsInfo.class);// 获取对应的高亮域Map<String, HighlightField> result = hit.highlightFields();// 从设定的高亮域中取得指定域HighlightField titleField = result.get("title");// 取得定义的高亮标签Text[] titleTexts = titleField.fragments();System.out.println(titleTexts.toString());// 为title串值增加自定义的高亮标签String title = "";for (Text text : titleTexts) {title += text;}// 将追加了高亮标签的串值重新填充到对应的对象newsInfo.setTitle(title);// 打印高亮标签追加完成后的实体对象System.out.println(newsInfo);}System.out.println("search success ..");} catch (Exception e) {// TODO: handle exception}}public static void main(String[] args) {ElasticSearchHandler esHandler = new ElasticSearchHandler();System.out.println("++++++高亮查询+++++++");esHandler.searcher("齐鲁壹点", QlydConstants.INDEX, QlydConstants.TYPE);}
}

ElasticSearch入门-搜索(java api)相关推荐

  1. ElasticSearch入门-搜索如此简单

    2019独角兽企业重金招聘Python工程师标准>>> 转载:http://donlianli.iteye.com/blog/1904064 搜索引擎我也不是很熟悉,但是数据库还是比 ...

  2. Elasticsearch 5.x Java api Aggregations(聚合)

    Ealsticsearch 5.x Java API聚合string类型的时候,会报错(json的错),则需要在聚合的string类型字段的后面添加.keyword , 虽然使用watch查看聚合的e ...

  3. elasticSearch入门到java操作api一套搞定

    目录 写在前面 一.下载地址 二.solr与es比较 三.安装elasticsearch 四.安装可视化界面(hand插件) 使用 五.安装kibana 六.学习es核心概念 七.IK分词器插件 八. ...

  4. Lucene 02 - Lucene的入门程序(Java API的简单使用)

    目录 1 准备环境 2 准备数据 3 创建工程 3.1 创建Maven Project(打包方式选jar即可) 3.2 配置pom.xml, 导入依赖 4 编写基础代码 4.1 编写图书POJO 4. ...

  5. 20 Rest高级客户端实践(六):搜索入门和基本API介绍

    文章目录 1 入门程序 2 API基本介绍 2.1 SearchRequest 2.2 SearchSourceBuilder 基础设置项 设置查询条件 设置排序策略 source filter 高亮 ...

  6. Elasticsearch Java API 6.2(java client)

    前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...

  7. Elasticsearch Java API四种实现方式

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

  8. ElasticSearch分布式搜索框架

    目录 一. ElasticSearch背景 1.1 Elasticsearch介绍 1.2 Elasticsearch现状 1.3 Es最佳实践 二. 环境配置安装 2.1 Elasticsearch ...

  9. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

最新文章

  1. 4、Docker 提交运行中容器作为新的镜像
  2. C# 基础知识 (四).C#简介及托管代码
  3. 二:Go编程语言规范-类型
  4. 监督分类空白处也被分类了_监督学习(2)|本质是分类的“逻辑回归”
  5. Linux下如何安装.cer证书
  6. 时间序列预测系统α版本迭代总结
  7. Error building results for action sayHello in namespace /inteceptor -
  8. Community找不到Workspace按钮的处理方法
  9. [CATARC_2017] 第三周 残四周
  10. 在页面加载后执行任务
  11. 购入计算机主机怎么入账,出纳记账软件更换主机电脑时如何备份附件资料?
  12. 00006__WindowsAPI 之 CreatePipe、CreateProcess
  13. 科学计算机r系数的操作,R语言实现Fleiss’ Kappa系数处理多个观察者一致性检验...
  14. Echarts饼状图空心圆技巧 | 爱骇客 | 骇客
  15. 网络技术与技术革命周末随想
  16. 非线性可视化(3)混沌系统
  17. PLC振荡电路——控制灯闪烁
  18. UEFI----EFI_DRIVER_BINDING_PROTOCOL
  19. wordpress创建_您可以使用WordPress创建的19种网站类型
  20. 我用数据告诉你,哪个省才是高考地狱模式?

热门文章

  1. 终端 timed out waiting for input: auto-logout解决
  2. css设置表单背景颜色为透明色
  3. 【Unity入门计划】playground项目:2D飞船移动小游戏
  4. html中图片之间有缝隙,科技常识:HTML5中图片之间的缝隙完美解决方法
  5. 爬虫入门实战系列(四):Amazon电子书销售排行榜爬取【Lxml库、Xpath语法熟悉】
  6. 错误代码: 1146 Table 'test.triggers' doesn't exist
  7. 【花雕学AI】ChatGPT帮我快速优化标题:古老的非洲部落,有一种神奇的超音速烫脚舞
  8. glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用
  9. 1096 大美数 (15 分)(测试点有坑)
  10. c语言button用法,C# Button:按钮控件