一、ElasticSearch简介
官方地址:Elasticsearch:官方分布式搜索和分析引擎 | Elastic
1.1 ElasticSearch简介
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,同时是可扩展的数据存储和矢量数据库,能够应对日益增多的各种用例。作为 Elastic Stack 的核心,Elasticsearch 能够集中存储您的数据,实现闪电般的搜索速度、精细的相关性调整以及强大的分析能力,并且能够轻松地进行规模扩展。
1.2 ElasticSearch优势
- 分布式架构:Elasticsearch 是一个分布式系统,可以轻松地水平扩展,处理大规模的数据集和高并发的查询请求。
- 全文检索功能:Elasticsearch 提供了强大的全文检索功能,包括分词、词项查询、模糊匹配、多字段搜索等,并支持丰富的查询语法和过滤器。
- 多语言支持:Elasticsearch 支持多种语言的分词器和语言处理器,可以很好地处理不同语言的文本数据。
- 高性能:Elasticsearch 使用倒排索引和缓存等技术,具有快速的搜索速度和高效的查询性能。
- 实时性:Elasticsearch 支持实时索引和搜索,可以几乎实时地将文档添加到索引中,并立即可见。
- 易用性:Elasticsearch 提供了简单易用的 RESTful API,方便进行索引管理、查询操作和数据分析。
1.3 ElasticSearch的使用场景
只要用到搜索的场景,ES几乎都可以是最好的选择。国内现在有大量的公司都在使用 Elasticsearch,包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。
- 搜索引擎
- 站内搜索
- 日志管理与分析
- 大数据分析
二、centos7安装ElasricSearch详细步骤
跟着我的步骤一步步安装,如果你还是装不好,你来打我。
2.1 下载ElasticSearch
下载地址:Elasticsearch 7.17.3 | Elastic
通过工具,将安装包上传到服务器上,然后解压,我的上传路径是/usr/local/elaticsearch
#解压命令
tar -zxvf elasticsearch-7.17.3-linux-x86_64.tar.gz
2.2 配置环境变量
ElasticSearch从7.x以后内置了jdk,只需要配置一下环境变量就可以了
vim /etc/profile 在最下面加入配置
执行 source /etc/profile 让环境变量生效
2.3 配置ElasticSearch.yml
进入/usr/local/elaticsearch/elasticsearch-7.17.3/config目录,修改elasticsearch.yml
找到文件中下面的内容,修改下面的参数:
vim elasticsearch.yml
# 监听所有的网卡
network.host: 0.0.0.0
#elasticsear的端口,默认就是9200
http.port: 9200
# 指定名称
node.name: node-1
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
2.4修改JVM的参数
vim jvm.options
#找到文件中的这个配置,打开注释,记得一定要顶格,前面不要有空格
-Xms4g
-Xmx4g
2.5 启动ES服务
直接启动:bin/elasticsearch
后台启动:bin/elasticsearch -d
启动时可能出现的报错:
1、ES服务,默认是不能用root用户启动的,如果你直接启动,就会报错
那么来吧,创建个新的用户,新增个chuyi的用户,然后设置密码,最后把elasticsearch的目录给他赋值上权限
adduser chuyi
passwd chuyi
chown -R chuyi:chuyi /usr/local/elasticsearch
切换账号,重新启动es,第一次启动的时候,建议不要后台启动,直接启动方便查看日志,第一次安装会遇到各种问题,等直接启动成功后,我们可以加个-d参数,再后台启动。
su chuyi
bin/elasticsearch
如果启动顺利的话,可以直接通过浏览器访问http://192.168.1.196:9200/
2、max number of threads [1024] for user [es] is too low, increase to at least [4096] 解决办法:
切换root用户修改
vim /etc/security/limits.d/20-nproc.conf
改为如下配置:
* soft nproc 4096
3、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 解决办法:
#切换到root用户
vim /etc/security/limits.conf
末尾添加如下配置:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
4、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
切换到root用户
vim /etc/sysctl.conf
追加以下内容:
vm.max_map_count=262144
保存退出之后执行如下命令:
sysctl -p
重新启动es,执行: bin/elasticsearch -d 即可
三、kibana客户端的安装
3.1 下载kibana
官方下载地址:Kibana 7.17.3 | Elastic
下载完成后,将kibana的包上传到服务器上,解压
3.2 配置kibana,修改Kibana.yml
kibana也需要非root用户启动
vim config/kibana.yml
#指定Kibana服务器监听的端口号
server.port: 5601
#指定Kibana服务器绑定的主机地址
server.host: "0.0.0.0"
#指定Kibana连接到的Elasticsearch实例的访问地址
elasticsearch.hosts: ["http://localhost:9200"]
#将 Kibana 的界面语言设置为简体中文
i18n.locale: "zh-CN"
3.3 启动kibana
nohup bin/kibana &
http://ip:5601
选择开发工具,即可访问es
四、ElasticSearch安装分词器
4.1默认分词器
我是一只小小鸟,默认分词是单个字,显然这不是我们想要的
4.2 安装 ik分词器
ik中文分词插件:https://github.com/medcl/elasticsearch-analysis-ik
将elasticsearch-analysis-ik-7.17.3.zip插件,解压,然后手动上传到elasticsearch的plugins目录,然后重启ES实例就可以了。
测试ik分词器:
五、springboot整合ElasticSearch
官方文档:Spring Data Elasticsearch :: Spring Data Elasticsearch
版本选择
Elasticsearch 7.17.3 对应依赖 Spring Data Elasticsearch 4.4.x,对应springboot版本2.7.x
maven文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.yml
spring:
elasticsearch:
uris: 192.168.1.196:9200
server:
port: 8095
controller测试类
@RestController
@RequestMapping("es/test")
public class ElasticSearchController {
@Resource
ElasticsearchRestTemplate elasticsearchRestTemplate;
@GetMapping("insertEs")
public void insertEs(){
IndexCoordinates indexCoordinates = IndexCoordinates.of("user");
User save = elasticsearchRestTemplate.save(new User("1", "lisi", "上海", 20),indexCoordinates);
System.out.println(save);
}
}
本章所用到的安装包的下载地址:
链接:https://pan.baidu.com/s/16BVoUwkVPZiBibepDwDSZw?pwd=8888
提取码:8888