SpringBoot集成ElasticSearch 7.6【新版本】及安装使用操作

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: SpringBoot集成ElasticSearch 7.6【新版本】及安装使用操作

一、概述


1.1 DB ~ ES

20200727111614237.png

1.2 安装准备


JDK1.8 以上

ElasticSearch下载地址:ElasticSearch下载地址

elasticsearch-head下载地址:elasticsearch-head

kibana下载地址:kibana下载地址

IK分词器插件:IK分词器插件

以上版本要一致


20200727100606861.png

二、Win安装ES使用


解压即可

注意事项


2.1 jvm.options

20200727101152574.png


2.2 启动


bin 下的  elasticsearch.bat 双击即可


2.3 访问


127.0.0.1:9200


三、win安装可视化插件 Head


下载地址:elasticsearch-head


3.1 安装好node.js环境


安装依赖

cnpm install 
npm run start


访问:127.0.0.1:9100

访问不了…


3.2 解决跨域问题


elasticsearch.yml

// 添加
http.cors.enabled: true
http.cors.allow-origin: "*"

3.3 重新启动elasticsearch

20200727103333977.png


四、安装可视化平台 Kibana


4.1 简介


ELK是Elasticsearch. Logstash. Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是- 一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es.

Logstash是ELK的中央数据流引擎,用于从不同日标(文件/数据存储/MQ )收集的不同格式数据,经过过滤后支持输出到不同目的

地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来 ,提供实时分析的功

能。

市面上很多开发只要提到ELK能够一致说出它是一 个日志分析架构技术栈总称 ,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。


4.2 win下载安装kibana


kibana下载地址:kibana下载地址


启动


bin 下的 kibana.bat 双击使用


访问:


127.0.0.1:5601


20200727110709853.png


4.3 修改汉化Kinana

20200727111040711.png


i18n.locale: "zh-CN"


4.4 重新启动Kibana即可


20200727111245550.png



五、安装IK分词器插件


5.1 下载


IK分词器插件:IK分词器插件


5.2 集成到ES


打开ES的plugins的目录,进行解压


20200727122301904.png


重启ES


5.3 kibana测试

20200727122854733.png

5.4 REST操作

image.png

5.4.1 PUT创建索引

// put /索引名/类型名/文档ID   {请求体}
PUT /test1/type1/1
{
  "name": "古力娜扎",
  "age":26
}
// 索引字段类型设置
PUT /test2
{
  "mappings":{
    "properties":{
      "name":{
        "type":"text"
      },
      "age":{
        "type":"long"
      }
    }
  }
}


5.4.2 GET获取索引信息


GET test2


5.4.3 POST修改数据


//1. 直接put 相同的ID  版本号增加
//2. update
UPDATE /test1/type1/1/_update
{
  "doc"{
    "name": "古力娜扎",
    "age":30
  }
}


5.4.4 DELETE删除索引


DELETE test1


六、SpringBoot集成ES


20200727134623119.png



6.1 添加依赖

20200727141444148.png


20200727141548858.png

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artificatId>elasticsearch-rest-high-level-client</artificatId>
  <version>7.6.2</version>
</dependency>


6.2 代码测试


ElasticSearchConfig.java

public class ElasticSearchConfig{
  @Bean
  public RestHighLevelClient  restHighLevelClient (){
    RestHighLevelClient client = new RestHighLevelClient(
      RestClient.builder(
        new HttpHost("localhost",9200,"http")));
    return client;
  }
}

增删改查-----测试类

@Autowired
private RestHighLevelClient client;
// 1.创建索引
void testCreateIndex(){
  CreateIndexRequest request = new CreateIndexRequest("test_index");
  CreateIndexResponse response = client.indices().creatre(request,RequestOptions.DEFAULT);
  System.out.println(response);
// 2.获取索引信息
void testGetIndex(){
  GetIndexRequest request = new GetIndexRequest("test_index");
  boolean b = client.indicies.exists(request,RequestOptions.DEFAULT);
    System.out.println(b);
}
// 3. 删除索引
void testDeleteIndex(){
  DeleteIndexRequest request = new DeleteIndexRequest("test_index");
  AcknowledgeResponse delete = client.indicies.delete(request,RequestOptions.DEFAULT);
    System.out.println(delete.isAcknowledge());
}
}

6.3 文档创建【增删改查】


创建实体类


@Component
@AllArgsConstrator
@NoArgsConstrator
public class User{
  private String name;
  private int age;
}

测试类

// 4.添加文档
void testAddDoc(){
  User user = new User("古力娜扎",26);
  IndexRequest request = new IndexRequest("test_index");
  // 规则 put /test_index/_doc/1
  request.id("1");
  request.timeout(TimeValue.timeValueSeconds(1));
  request.tomeout("1s");
  request.source(JSON.toJSONString(user),XContentType.JSON);
  // 发送
  IndexResponse response = client.index(request,RequestOptions.DEFAULT);
  System.out.println(response.toString());
  System.out.println(response.status());
}
// 5.获取文档
void testGetDoc(){
  GetRequest request = new GetRequest("test_index","1");
  request.fetchSourceContext(new FetchSourceContext(false));
  request.storeFields("_none_");
  // 是否存在???
  boolean b = client.exists(request,RequestOptions.DEFAULT);
  System.out.println(b);
  // 获取
  GetResponse response = client.get(request,RequestOptions.DEFAULT);
  System.out.println(response.getSourceAsString());
  System.out.println(response);
}
// 6. 更新文档
void testUpdateDoc(){
  UpdateRequest updateRequest = new UpdateRequest("test_index",1);
  updateRequest.timeout("1s");
  User user = new User("迪丽热巴",28);
  updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
  UpdateResponse response = client.update(request,RequestOptions.DEFAULT);
  System.out.println(response);
  System.out.println(response.status());
}
// 7.删除文档
void testDeleteDoc(){
  DeleteRequest request = new DeleteRequest("test_index",1);
  updateRequest.timeout("1s");
  DeleteResponse response = client.delete(request,RequestOptions.DEFAULT);
  System.out.println(response);
  System.out.println(response.status());
}
// 8.批量插入数据
void testBulkRequest(){
  BulkRequest bulkRequest = new BulkRequest();
  bulkRequest.timeout("15s");
  ArrayList<User> userList = new ArrayList<>();
  userList.add(new User("古力娜扎1号",26));
  userList.add(new User("古力娜扎2号",27));
  userList.add(new User("古力娜扎3号",28));
  userList.add(new User("古力娜扎4号",29));
  userList.add(new User("古力娜扎5号",30));
  userList.add(new User("古力娜扎6号",31));
  userList.add(new User("古力娜扎7号",32));
  for(int i = 0;i<=userList.size();i++){
    bulkRequest.add(
      new IndexRequest("test.index").
      id(""+(i+1)).
      source(JSON.toJSONString(userList.get(i)),XContentType.JSON));
  }
  // 批量插入
  BulkResponse response = client.bulk(bulkRequest,RequestOptions.DEFAULT);
  System.out.println(bulkRequest.hasFailures());
}
// 9.条件搜索
void testSearch(){
  SearchRequest searchRequest = new SearchRequest("test_index");
  // 构造条件
  SearchSourceBuilder builder = new   SearchSourceBuilder();
  // 精确匹配
  //TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name","古力娜扎");
  // 匹配全部 matchAllQuery();
  builder.query(termQueryBuilder);
  // 分页
  builder.from();
  builder.size();
  builder.timeout("60s");
  searchRequest.source(builder);
  SearchResponse response = client.search(searchRequest,RequestOptions.DEFAULT);
  System.out.println(JSON.toJSONString(response.getHits()));
  //遍历出来
  for(SearchHit docFields : searchRequest.getHits().getHits()){
    System.out.println(docFields.getSourceAsMap());
  }
}


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
29天前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
96 1
|
1月前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
38 1
|
2月前
|
druid Java Maven
|
29天前
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
75 0
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
143 1
|
2月前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
611 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
181 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
77 0
|
2月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
113 0
|
2月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
164 0