热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring架构篇——SpringBoot整合Elasticsearch

转载请注明出处:http:blog.csdn.netsmartbetterarticledetails53535435ElasticSearch是一个基于Lucene的搜索

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53535435

ElasticSearch 是一个基于 Lucene 的搜索服务器,是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

1.Spring Boot整合Elasticsearch

需要添加 Maven 依赖:


<dependency>
<groupId>org.elasticsearchgroupId>
<artifactId>elasticsearchartifactId>
<version>5.6.3version>
dependency>
<dependency>
<groupId>org.elasticsearch.clientgroupId>
<artifactId>transportartifactId>
<version>5.6.3version>
dependency>

<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.7version>
dependency>

在 Java 配置类中注册 bean:

@Bean
public TransportClient getTransportClient() throws UnknownHostException {
//ES默认TCP端口是9300
InetSocketTransportAddress node = new InetSocketTransportAddress(
InetAddress.getByName("192.168.2.20"), 9300
);
Settings settings = Settings.builder()
.put("cluster.name", "es")
.build();
TransportClient client = new PreBuiltTransportClient(settings);
//多个client多次new InetSocketTransportAddress,多次添加就行
client.addTransportAddress(node);
return client;
}

到此集成成功。

2.Elasticsearch基本用法

首先需要注入 TransportClient:

@Autowired
private TransportClient client;

查询:

GetResponse respOnse= client.prepareGet("book", "techbook", "1").get();
System.out.println(response.getSource()); //输出查询结果

创建:

XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("title", "java8")
.field("author", "Tom")
.field("word_count", 1000)
.endObject();
IndexResponse respOnse= client.prepareIndex("book", "techbook")
.setSource(builder)
.get();
System.out.println(response.getResult() + ", id=" + response.getId()); //输出创建结果,成功返回 CREATED

删除:

DeleteResponse respOnse= client.prepareDelete("book", "techbook", "1").get();
System.out.println(response.getResult()); //输出删除结果,成功返回 DELETED

修改:

UpdateRequest request    = new UpdateRequest("book", "techbook", "1");
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("title", "java9")
.endObject();
request.doc(builder);
UpdateResponse respOnse= client.update(request).get();
System.out.println(response.getResult()); //输出修改结果,成功返回 UPDATED

复合查询:

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("author", "Tom"));
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("word_count")
.from("1000")
.to("5000");
boolQuery.filter(rangeQuery);
SearchResponse respOnse= client.prepareSearch("book")
.setTypes("techbook")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(boolQuery)
.setFrom(0)
.setSize(10)
.get();
System.out.println(response); //输出复合查询结果


推荐阅读
  • 初学SpringBootch06接口架构风格 RESTful
    ch06-接口架构风格RESTful1.1认识RESTful1.1.1RESTful架构风格1.2RESTful注解1.3RESTful风格的使用1.3.1加入Maven依赖1.3 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 此版本重点升级了Online代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率;同时做了数据库兼容专项工作,让Online开发兼容更多数据库:Mysql、SqlServer、Oracle、Postgresql等!!!项目介绍 ... [详细]
  • 实战基于SpringBoot2的WebFlux和mLab搭建反应式Web
    SpringFramework5带来了新的ReactiveStack非阻塞式Web框架:SpringWebFlux。作为与SpringMVC并行使用的Web框架,SpringWeb ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
  • 微服务应用性能分析实战15 数据磐石:APM 收集端的存储模型
    分布式监控的重要设计就是数据存储模型,而SkyWalking的分布式追踪数据模型就是一个经典代表,这也是它会在APM领域脱颖而出的原因。所以今天我就以 ... [详细]
  • 业务:Payments&Risk大数据/AI/数据可视化时间要求:至少实习6个月,每周5天,入职时间4-5月 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文总结了淘淘商城项目的功能和架构,并介绍了传统架构中遇到的session共享问题及解决方法。淘淘商城是一个综合性的B2C平台,类似京东商城、天猫商城,会员可以在商城浏览商品、下订单,管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。商城的架构包括后台管理系统、前台系统、会员系统、订单系统、搜索系统和单点登录系统。在传统架构中,可以采用tomcat集群解决并发量高的问题,但由于session共享的限制,集群数量有限。本文探讨了如何解决session共享的问题。 ... [详细]
author-avatar
北京草舞945share
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有