文章目录
一、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的区别
es | solr | |
---|---|---|
api | restful api | web-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;
}
}