SpringBoot集成Elasticseach

阅读 15

2022-03-25

文章目录

一、ElasticSearch介绍

官网:https://www.elastic.co/cn/
安装es:https://blog.csdn.net/promsing/article/details/122722302

1.1 简单介绍

  • ElasticSearch 6.x版本和7.x版本使用差别挺大的。
  • ES是一个基于lucene的一个分布式全文检索引擎(高可用,实时存储检索数据);
  • ES的目的:通过RESTFUL api 来隐藏lucene的复杂性,从而让全文检索变得简单;
  • 在ES中索引就是数据库

1.2 es和solr的区别

essolr
apirestful apiweb-service api
大数据效率高效率一般
实时查询支持不支持

1.3 ES的核心概念

ElasticSearch是面向文档的,只要按了ES那就是一个集群

  • es中的数据一切都是json格式。
  • 索引和搜索数据的最小单位就是文档
  • 文档其实就是一条条数据
  • es底层是使用倒排索引
    (假如有三个文档,会把每个文档拆分成独立的不重复的词,然后假如搜索 to forever,to在文1和文2中都有,forever只要文1有,那么文1的权重score就比文2的权重高,从而文1匹配度更高,文档3会直接被过滤掉不搜索)

二、ElasticSearch安装

从https://www.elastic.co/ 官网(拉倒最下面)下载安装包

2.1 windows版本的安装

jdk至少得是1.8+,es的版本和java的核心jar包要一致;

2.1.1 安装ElasticSearch

出于安全考虑,elasticsearch默认不允许以root账号运行。

ES 无法使用root用户安装,需要使用普通用户。

ELK都是解压即使用
在这里插入图片描述

bin:启动文件
config:配置文件
     log4j2:日志配置文件
     jvm.options:java虚拟机相关的配置
     elasticsearch.yml:elasticsearch的配置文件!默认9200端口!跨域!
lib:相关jar包
logs:日志
modules:功能模块
plugins:插件!
  • 修改jvm配置文件-jvm.options的内存使用
    根据自己的实际情况设置

在这里插入图片描述

  • 启动,打开bin’目录,双击elasticsearch.bat
  • 访问测试 http://127.0.0.1:9200/
    在这里插入图片描述

在这里插入图片描述

2.1.2 安装es的可视化界面head

head插件下载地址:https://github.com/mobz/elasticsearch-head/
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

用head插件(需要前端的node.js环境),默认9100
解压即使用,再用命令启动和下载依赖(npm run start,再起文件cmd进入命令窗口)

# 安装cnpm的命令
npm install -g cnpm -registry=https://registry.npm.taobao.org
# cnpm下载资源更快
cnpm install
npm run start

在这里插入图片描述

在es的配文elasticSearch.yml中设置跨域
// 支持跨域 + // 支持所有人访问

http.cors.enabled: true 
http.cors.allow-origin: "*" 

在这里插入图片描述

在重启es,此时在http://127.0.0.1:9001/的可视化界面就可以访问http://127.0.0.1:9002

在这里插入图片描述

2.1.3 ELK介绍

ELK是elaseticsearch(搜索)、logstash(中央数据流)、kibana(展示) 三大开源框架的简称,多用于日志分析。
Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析收集的场景,日志分析和收集只是更具有代表性,并非唯一性。
在这里插入图片描述

2.1.4 kibana安装

官网:https://www.elastic.co/cn/kibana/

kibana的版本要与ElasticSearch一致,解压即使用;

①启动,bin中的kibana.bat双击
②http://localhost:5601 访问测试
③使用,在左边有一个扳手一样的开发工具,在console上面进行操作编写
④汉化界面,在kibana的config文件夹下的kibana.yml上修改,在最后面加上 i18n.locale: “zh-CN”
⑤ 重启kibana即可
选择开发工具Dev Tools,点击控制台

2.1.5 IK分词器的安装

分词:把字段文字划分成一个个关键字
IK提供了两个分词算法:(是一个中文分词器)
- ik_smart 最小切分
- ik_max_word 最细颗粒划分

下载地址:https://github.com/medcl/elasticsearch-analysis-ik 注意要和es版本一致
下载完成之后,解压放在elasticsearch的plugins文件(自建一个ik文件夹)下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

安装:把ik的压缩包,解压到es下的plugins文件中(自建一个ik文件夹),重启es
测试:

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我爱你中国"
}

在这里插入图片描述

<entry key="ext_dict">mytext.dic</entry>

重启es

在这里插入图片描述

三、springboot集成ElasticSearch

3.1 依赖

<dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
      </dependency>
      
 </dependencies>

3.2 配置

为es起名,和设置ip及其端口

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 192.168.7.132:9300

3.3 配置类


import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ES配置类
 * 
 * @author lc
 * @version 1.0
 * @date 2022/3/25 10:53
 */
@Configuration
public class ElasticSearchClientConfig {

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

3.4 使用

精彩评论(0)

0 0 举报