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客户端做很多事情: 执行标准的 ... 
随机推荐
- HTML表格中<td scope="col">与<td scope="row">的含义
			HTML表格中<td scope="col">与<td scope="row">的含义 表格中 <td scope="c ... 
- JDBC初步
			public class TestMySqlConnection{ public static void main(String[] args){ Class.forNa ... 
- 在vue项目中使用md5加密
			MD5:信息-摘要算法,是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式 一般我们把登录和注册信息的密码进行加密 1.安装模块 cnpm install js ... 
- Telnet用不了怎么办
			配置了几天的Oracle数据库,忙坏我了,遇到无数问题,其中一个就是Telnet无法使用: 经过检查发现,其实是这个软件没有安装,取程序里面找到之后,加装这个组件,完成安装. 但是还是不能用,发现服务 ... 
- 在PCL中如何实现点云压缩(1)
			点云由庞大的数据集组成,这些数据集通过距离.颜色.法线等附加信息来描述空间三维点.此外,点云能以非常高的速率被创建出来,因此需要占用相当大的存储资源,一旦点云需要存储或者通过速率受限制的通信信道进行传 ... 
- hdu1099
			#include<iostream> using namespace std; __int64 gcd(__int64 a,__int64 b) { return b?gcd(b,a%b) ... 
- Python开发【第三篇】:分支循环
			1. if 条件语句 语法: if 条件: 代码块 # 条件为真执行 else: # else 可选 代码块 # 条件为假执行 示例: n = int(input('请输入一个数字:')) i ... 
- [CentOS7] 搭建vncserver,远程通过vncviewer来查看图形界面
			Linux上搭建vncserver需下载tigervnc,当然可以从命令下载: 查看一下可以下载哪些: 下载tigervnc-server: 然后可以简单看下 cat /lib/systemd/sys ... 
- 反射实现增删改查(DAO层)——修改数据
			先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 修改数据 * */ @Override public void updateObject(Object object, Strin ... 
- Mysql-5-数据表的基本操作
			1.创建表:之前需要use database database_name 然后create table 表名(): 例:创建员工表tb_employee1,结构如下表所示 字段名称 数据类型 备注 i ... 
