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表示要查询的索引库为productindex
SearchRequestBuilder 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

最新文章

  1. 269. Alien Dictionary 另类字典 *HARD*
  2. CAD二次开发---导入外部文件中的块并输出预览图形(五)
  3. [老老实实学WCF] 第五篇 再探通信--ClientBase
  4. 一些SVN 地址
  5. 阿里云ECS被攻击
  6. PHP如何让apache支持.htaccess 解决Internal Server Error The server …错误
  7. uiautomatorviewer 可以查看到android中的web 元素信息
  8. 索尼 LT26I刷机包 X.I.D 增加官方风格 GF A3.9.4 各方面完美
  9. PHP设计模式之工厂模式
  10. Require,js配置使用心得
  11. Django admin 组件 原理分析与扩展使用 之 sites.py (一)
  12. ubuntu更改用户密码
  13. Linux下可以ping ip地址但无法ping域名解决方法
  14. Linux 驱动——Button驱动4(fasync)异步通知
  15. Learning to Promote Saliency Detectors
  16. 【转载】关于.NET下开源及商业图像处理(PSD)组件
  17. 30秒了解Excel的前世今生
  18. pycharm 激活
  19. Mysql----索引原理与慢查询优化
  20. Python中第三方库的安装

热门文章

  1. C++经典问题:狐狸找兔子
  2. p4180 次小生成树
  3. neon eclipse tomcat发布项目乱码
  4. Code Page Identifiers - Copy from Microsoft
  5. hdu1052
  6. linux 的 scp 命令
  7. 【service调用dao层传参的三种方式】
  8. MySQL server has gone away问题得解决方案
  9. 2017-10-19 NOIP模拟赛
  10. 魔卡少女(cardcaptor)——线段树