首页 技术 正文
技术 2022年11月6日
0 收藏 699 点赞 279 浏览 2350 个字

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902