ElasticSearch入门-搜索(java api)
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
ElasticSearch入门-搜索(java api)的更多相关文章
- ElasticSearch入门-搜索如此简单
搜索引擎我也不是很熟悉,但是数据库还是比较了解.可以把搜索理解为数据库的like功能的替代品.因为like有以下几点不足: 第一.like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹 ...
- Lucene 02 - Lucene的入门程序(Java API的简单使用)
目录 1 准备环境 2 准备数据 3 创建工程 3.1 创建Maven Project(打包方式选jar即可) 3.2 配置pom.xml, 导入依赖 4 编写基础代码 4.1 编写图书POJO 4. ...
- Elasticsearch 2.3.3 JAVA api说明文档
原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...
- Elasticsearch Java API深入详解
0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...
- Elasticsearch java api 基本搜索部分详解
文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...
- [搜索]ElasticSearch Java Api(一) -添加数据创建索引
转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...
- Elasticsearch的CRUD:REST与Java API
CRUD(Create, Retrieve, Update, Delete)是数据库系统的四种基本操作,分别表示创建.查询.更改.删除,俗称"增删改查".Elasticsearch ...
- Elasticsearch 5.4.3实战--Java API调用:索引mapping创建
因为项目开发使用的是Java语言, 项目的开发架构是Spring MVC+ maven的jar包管理, 所以今天重点说说ES 5.4.3 的Java API的源码实战 1. pom.xml文件增加依 ...
- Elasticsearch Java API的基本使用
说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识. 客户端 你可以用Java客户端做很多事情: 执行标准的 ...
随机推荐
- Python-RabbitMQ消息队列的发布与订阅
RabbitMQ消息队列的发布与订阅类似于广播,一端发送消息,多个客户端可以同时接收到消息 fanout:所有绑定到exchange的queue都可以接收消息 消息发布端 # -*- coding:u ...
- 快速搭建SpringBoot项目
Spring Boot简介: Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目.它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Bo ...
- k8s 基础(4) k8s安装
转自 http://www.cnblogs.com/informatics/p/7389806.html 安装和配置 从github.com/kubernetes/kubernetes上下载1.6.8 ...
- 加减 script函数初识
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 第2天视频 08_androidHelloworld
为什么应用的包名要用公司域名倒写呢?如何区分不同的安卓应用?高版本的应用装了之后会把低版本的应用覆盖掉.如果是不同的应用跟其他应用没关系只要装上去就可以了.区别不同的应用用的比较关键的东西是一个是应用 ...
- 项目:条件查询 通过StringBulider和ArrayList(参数有序) 手动拼接sql
条件查询的sql拼接 参数拼接 public List<Product> findAll(Product product) throws SQLException { //1.1 拼凑sq ...
- 决策树算法原理及JAVA实现(ID3)
0 引言 决策树的目的在于构造一颗树像下面这样的树. 图1 图2 1. 如何构造呢? 1.1 参考资料. 本例以图2为例,并参考了以下资料. (1) http://www.cnblog ...
- 使用MailMessage发送邮件
SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Netwo ...
- Mail.Ru Cup 2018 Round 2C(__gcd)
#include<bits/stdc++.h>using namespace std;long long mx(long long l1,long long r1,long long l2 ...
- 2017-11-7 NOIP模拟赛
1.数学老师的报复 #include<iostream> #include<cstdio> using namespace std; int cnt; ]; long long ...