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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
24天前
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
|
2月前
|
IDE Java Maven
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
14 2
|
3天前
|
SQL JSON DataWorks
DataWorks产品使用合集之DataWorks 数据集成任务中,将数据同步到 Elasticsearch(ES)中,并指定 NESTED 字段中的 properties 类型如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
12 0
|
7天前
|
安全 Java API
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
13 1
|
7天前
|
自然语言处理 Java 索引
SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)
SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)
13 1
|
24天前
|
Java 测试技术 API
springboot整合ElasticSearch(工具类、测试调用)
springboot整合ElasticSearch(工具类、测试调用)
|
2月前
|
Java 测试技术 Maven
SpringBoot集成Elasticsearch
SpringBoot集成Elasticsearch
25 0
|
2月前
|
消息中间件 Java 关系型数据库
【二十】springboot整合ElasticSearch实战(万字篇)
【二十】springboot整合ElasticSearch实战(万字篇)
221 47
|
23天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
1月前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
85 2

热门文章

最新文章