文章目录
1:ElasticSearch介绍
Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。
官方网址
下载地址
ElasticSearch底层实现是Lucene框架
1.1 ES vs 关系型数据库
关系性数据库 | database(数据库) | table(表) | row(行) | colum(列) |
---|---|---|---|---|
ES | index(索引库) | type(类型) | document(文档) | field(字段) |
1.2 全文检索和倒排索引
全文检索:
- 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数
- 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了
倒排索引 :
- 索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,也成为正排索引。倒排索引是通过 数据中的关键字 对应 关系。通过关键字查询文章。称为倒排索引。
2:ElasticSearch7.6.1单机安装
安装环境:4核4G内存的centos7虚拟机
ES不能使用root用户来启动,必须使用普通用户来安装启动
先创建组, 再创建用户:
1)创建 elasticsearch 用户组
[root@localhost ~]# groupadd elasticsearch
2)创建用户 tlbaiqi 并设置密码
[root@localhost ~]# useradd xxx
[root@localhost ~]# passwd xxx
3)# 创建es文件夹,
并修改owner为xxx用户
mkdir -p /usr/local/es
#chown 用户名 文件名 -R
chown tlbaiqi es -R
4)用户es 添加到 elasticsearch 用户组
[root@localhost ~]# usermod -G elasticsearch xxx
[root@localhost ~]# chown -R xxx/usr/local/es/elasticsearch-7.6.1
5)设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
[root@localhost ~]# visudo
#在root ALL=(ALL) ALL 一行下面
#添加xxx用户 如下:
tlbaiqi ALL=(ALL) ALL
#添加成功保存后切换到xxx用户操作
[root@localhost ~]# su xxx
修改配置文件:elasticsearch.yml
cd /usr/local/es/elasticsearch-7.6.1/config
vim elasticsearch.yml
cluster.name: my-es
node.name: node1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["服务器IP"]
cluster.initial_master_nodes: ["节点名"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
修改jvm.option
cd /usr/local/es/elasticsearch-7.6.1/config
vim jvm.options
-Xms1g
启动:
后台启动ES 进入bin目录 ./elasticsearch -d
启动成功之后jsp即可看到es的服务进程,并且访问页面
http://服务器ip:9200/?pretty
会遇到的问题:
1:普通用户打开文件的最大数限制
问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
sudo vi /etc/security/limits.conf
#添加如下内容: 注意*不要去掉了
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
3:kibana7.6.1安装
#进入/usr/local/es/kibana-X.X.X-linux-x86_64/config目录
vim kibana.yml
server.port: 5601
server.host: "服务器IP"
elasticsearch.hosts: ["http://IP:9200"] #这里是elasticsearch的访问地址
启动:
#进入/usr/local/es/kibana-X.X.X-linux-x86_64/bin目录
./kibana
后台启动kibana
nohup ./kibana &
访问Kibana
http://ip:5601/app/kibana
4:安装IK7.6.1分词器
下载:https://github.com/medcl/elasticsearch-analysis-ik/releases
su xxx
mkdir -p /usr/local/es/elasticsearch-7.6.1/plugins/ik
#将下载的ik分词器上传并解压到该目录
#重启es
5:简单语法
GET _search
{
"query": {
"match_all": {}
}
}
# 设置索引分词,最细粒分词器
PUT /es_db
{
"settings": {
"index":{
"analysis.analyzer.default.type":"ik_max_word"
}
}
}
# 插入数据
PUT /es_db/_doc/2
{
"name":"jcf111",
"age":28,
"sex":"男11",
"address":"深圳平安金融大厦11"
}
#查询es_db索引下所有数据
GET /es_db/_search
GET /es_db/_doc/1
#根据字段查询
GET /es_db/_doc/_search?q=age:18
#范围查询
GET /es_db/_doc/_search?q=age[1 TO 25]
#批量查询
GET /es_db/_mget
{
"ids":[1,2]
}
GET /es_db/_doc/_search?q=age:>18
#排序
GET /es_db/_doc/_search?sort=age:desc
GET /es_db/_doc/_search?q=age[1 TO 100]&from=0&size=2&sort=age:desc