- 1:ElasticSearch介绍
- 1.1 ES vs 关系型数据库
- 1.2 全文检索和倒排索引
- 2:ElasticSearch7.6.1单机安装
- 3:kibana7.6.1安装
- 4:安装IK7.6.1分词器
- 5:简单语法
Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。
官方网址
下载地址
ElasticSearch底层实现是Lucene框架
| 关系性数据库 | database(数据库) | table(表) | row(行) | colum(列) |
|---|---|---|---|---|
| ES | index(索引库) | type(类型) | document(文档) | field(字段) |
全文检索:
- 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数
- 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了
倒排索引 :
- 索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,也成为正排索引。倒排索引是通过 数据中的关键字 对应 关系。通过关键字查询文章。称为倒排索引。
安装环境: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 20483: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/kibana4:安装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分词器上传并解压到该目录 #重启es5:简单语法
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



