Elasticsearch的学习
Elasticsearch对比Solr
Solr也是基于Lucene的一款全文搜索引擎,下面是他们的对比。
- Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能;
- Solr支持更多格式的数据,而Elasticsearch仅支持json文件格式;
- Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供;
- Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch。
目前Elasticsearch的市场占有率越来越高,Spring从2020年起也已经停止Spring Data Solr的维护,更多的公司使用Elasticsearch作为搜索引擎。
Elasticsearch数据结构
文档(Document):文档是可被查询的最小数据单元,一个 Document 就是一条数据。类似于关系型数据库中的记录的概念。
类型(Type):具有一组共同字段的文档定义成一个类型,类似于关系型数据库中的数据表的概念。
索引(Index):索引是多种类型文档的集合,类似于关系型数据库中的库的概念。
域(Filed):文档由多个域组成,类似于关系型数据库中的字段的概念。
Elasticsearch跟关系型数据库中概念的对比:
| JAVA项目 | 项目 | 实体类 | 对象 | 属性 |
|---|---|---|---|---|
| ES | Index | Type | Document | Filed |
| Mysql | Database | Table | Row | Column |
注:ES7.X之后删除了type的概念,一个索引不会代表一个库,而是代表一张表
ES8,所以ES中概念对比为:
JAVA项目 项目 实体类 对象 属性 ES Index Document Filed Mysql Database Table Row Column
Elasticsearch安装ES服务
#关闭防火墙:
systemctl stop firewalld.service#禁止防火墙自启动:
systemctl disable firewalld.service
配置最大可创建文件数大小
#打开系统文件:
vim /etc/sysctl.conf#添加以下配置:
vm.max_map_count=655360#配置生效:
sysctl -p
由于ES不能以root用户运行,我们需要创建一个非root用户,此处创建一个名为es的用户:
#创建用户:
useradd es
安装服务
使用rz命令将linux版的ES上传至虚拟机
解压ES
#解压:
tar -zxvf elasticsearch-8.10.4-linux-x86_64.tar.gz#重命名:
mv elasticsearch-8.10.4 elasticsearch1#移动文件夹:
mv elasticsearch1 /usr/local/#es用户取得该文件夹权限:
chown -R es:es /usr/local/elasticsearch1
启动ES服务
#切换为es用户:
su es#进入ES安装文件夹:
cd /usr/local/elasticsearch1/bin/#启动ES服务:
./elasticsearch 当启动成功,可以看到类似以下的日志输出。首次启动Elasticsearch,默认会启用安全配置功能,启用身份认证和授权,内置超级用户elastic,并生成默认密码,此时要注意保存,否则之后启动不会再显示。
# 重置默认密码:
cd /usr/local/elasticsearch1/bin/
./elasticsearch-reset-password -u elastic# 自定义密码:
cd /usr/local/elasticsearch1/bin/
./elasticsearch-reset-password --username elastic -i
连接ES,查询ES服务是否启动成功
# 参数 --cacert指定了证书
curl --cacert /usr/local/elasticsearch1/config/certs/http_ca.crt -u elastic https://localhost:9200
