ElasticSearch入门-搜索(java api)
2016-03-23 09:56
555 查看
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();
// 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
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
相关文章推荐
- 【集合框架】JDK1.8源码分析HashSet && LinkedHashSet(八)
- spring自动创建代理类DefaultAdvisorAutoProxyCreator和BeanNameAutoProxyCreator的声明顺序
- ElasticSearch入门-增删改查(java api)
- ElasticSearch入门-增删改查(java api)
- Struts2 文件上传
- Java并发编程之阻塞队列
- Java 数据库操作之Dao类
- Java 输入 类似c的scanf
- Java反射机制的学习(2)
- 一个java开源小博客框架blog4j,基于注解、反射实现的小框架
- Spring配置文件详解三:Spring声明式事务管理
- spring4声明式事务--01注解方式
- spring4声明式事务—02 xml配置方式
- Spring学习8-Spring事务管理(AOP/声明式式事务管理)
- Java使用Graphics2D生成公章
- java随笔-Date
- 学习java 的经验
- Java HashMap工作原理及实现
- Java反射机制的学习(1)
- 做一个合格的程序猿之浅析Spring AOP源码(十二) AOP概念理解