Spring Boot 构建应用——整合 Elasticsearch 搜索引擎
2016-12-13 18:39
417 查看
ElasticSearch 是一个基于 Lucene 的搜索服务器,是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在 Java 配置类中注册 bean:
到此集成成功。
查询:
创建:
删除:
修改:
复合查询:
1.Spring Boot整合Elasticsearch
需要添加 Maven 依赖:<!-- elasticsearch --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.6.3</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.6.3</version> </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); //输出复合查询结果
相关文章推荐
- Spring Boot 构建应用——整合 Redis
- Spring Boot 构建应用——整合 Velocity 模版引擎
- 手把手构建Maven企业级应用(整合SSI框架)《3》
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
- 如何用 Node.js 和 Elasticsearch 构建搜索引擎
- Spring Boot 构建应用——整合 Dubbo 框架
- Spring Boot 构建应用——整合消息中间件 RabbitMQ
- 分布式SOA构建和谐应用整合平台
- 学习用Node.js和Elasticsearch构建搜索引擎(1):了解并运行Elasticsearch
- Spring Boot 构建应用——整合 Thymeleaf 模版引擎
- Spring Boot 构建应用——整合 Freemarker 模版引擎
- Spring boot 与 Docker-compose构建微服务应用(2)
- 手把手构建Maven企业级应用(整合SSI框架)
- 整合Struts2、Spring、Hibernate构建J2EE应用
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
- 手把手构建Maven企业级应用(整合SSI框架)《2》
- 手把手构建Maven企业级应用(整合SSI框架)《2》
- 手把手构建Maven企业级应用(整合SSI框架)《1》
- 构建垂直搜索引擎 本课程带领大家实现一个简单的垂直搜索引擎网站,使用nodejs、python、elasticsearch实现的。
- sparql和elasticsearch构建知识图谱搜索引擎