ES单机部署
下载es:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-
linux-x86_64.tar.gz
tar -zvxf elasticsearch-7.17.5-linux-x86_64.tar.gz
配置 Elasticsearch
关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
配置elasticsearch.yml
#设置允许访问地址,配置位0.0.0.0允许任意主机访问
- #network.host: 192.168.0.1
+ network.host: 0.0.0.0
# 配置集群
# node.name: node-1
+ node.name: node-1
- #discovery.seed_hosts: ["host1", "host2"]
discovery.seed_hosts: ["node-1"]
- #cluster.initial_master_nodes: ["node-1", "node-2"]
+ cluster.initial_master_nodes: ["node-1"]
修改Linux句柄数
# 查看当前最大句柄数
sysctl -a | grep vm.max_map_count
# 修改句柄数
vi /etc/sysctl.conf
+ vm.max_map_count=262144
# 临时生效
sysctl -w vm.max_map_count=262144
关闭swap
因为ES的数据大量都是常驻内存的,一旦使用了虚拟内存就会导致查询速度下降,一般需要关闭
swap,但是要保证有足够的内存
# 临时关闭
swapoff -a
# 永久关闭
vi /etc/fstab
注释掉swap的一行
修改最大线程数及创建ES用户
vi /etc/security/limits.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
# 重启服务
reboot
# es不能以root启动,创建用户
useradd elasticsearch
passwd elasticsearch
# 增加sudoers权限
vi /etc/sudoers
+ elasticsearch ALL=(ALL) ALL
# 给ES的安装目录进行授权
chown -R elasticsearch:elasticsearch elasticsearch-7.17.5
# jvm配置
vi jvm.options
+ -Xms4g
+ -Xmx4g
添加IK分词器
在github中下载对应版本的分词器
https://github.com/infinilabs/analysis-ik/releases
根据自己的ES版本选择相应版本的IK分词器,因为安装的ES是 7.17.5 ,所以也下载相应的IK分词
器
将下载的分词器复制到ES安装目录的 plugins 目录中并进行解压
mkdir ik && cd ik
unzip elasticsearch-analysis-ik-7.17.5.zip
# 启动
su elasticsearch
# 前台启动
sh bin/elasticsearch
# 后台启动
sh bin/elasticsearch -d
访问主机的9200端口
http://192.168.101.20:9200
kibana安装
下载安装 Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.5-linuxx86_64.tar.gz
tar -zvxf kibana-7.17.5-linux-x86_64.tar.gz
mv kibana-7.17.5-linux-x86_64 kibana-7.17.5
# 配置kibana
vi config/kibana.yml
- #server.port: 5601
+ server.port: 5601
- #server.host: "localhost"
+ server.host: "0.0.0.0"
- #elasticsearch.hosts: ["http://localhost:9200"]
+ elasticsearch.hosts: ["http://localhost:9200"]
# 启动kibana
su elasticsearch
#前台运行
sh bin/kibana
#后台运行
nohup sh bin/kibana >/dev/null 2>&1 &
访问地址:http://192.168.101.20:5601
ES快速入门
索引管理
列出索引
GET /_cat/indices?v
创建索引
查看索引
索引是否存在
关闭索引
在一些业务场景,我们可能需要禁止掉某些索引的访问功能,但是又不想删除这个索引
删除索引
映射管理
映射的创建时基于索引的,你必须要先创建索引才能创建映射,es中的映射相当于传统数据库中
的表结构,数据存储的格式就是通过映射来规定的
创建映射
可以在创建索引时指定映射,其中 mappings.properties 为固定结构,指定创建映射属性
PUT customer
{
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"age": {
"type": "integer"
}
}
}
}
查看映射
文档管理
创建文档(业务ID)
文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式
注意需要在索引后面添加 _doc ,表示操作文档
在未指定id生成情况,每执行一次post将生成一个新文档
如果index不存在,将会默认创建
新增文档,自动生成文档id,并且如果如果添加文档的索引不存在时会自动创建索引
post customer/_doc/1
{
"name" : "张三",
"age" : 15
}
# 返回结果
{
"_index" : "customer", #所属索引
"_type" : "_doc", #所属mapping type
"_id" : "1", #文档id
"_version" : 1, #文档版本
"result" : "created", #文档创建成功
"_shards" : {
"total" : 2, #所在分片有两个分片
"successful" : 1, #只有一个副本成功写入,可能节点机器只有一台
"failed" : 0 #失败副本数
},
"_seq_no" : 0, #第几次操作该文档
"_primary_term" : 1 #词项数
}
创建文档(自动ID)
自动生成的ID是一个不会重复的随机数,使用GUID算法,可以保证在分布式环境下,不同节点同一时间创建的 _id 一定是不冲突的
post customer/_doc
{
"name" : "李四",
"age" : 50
}
更新文档
全量更新
和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖
post customer/_doc/1
{
"name" : "张三",
"age" : 50
}
增量更新
通过指定 _doc 方式默认是全量更新,如果需要更新指定字段则需要将 _doc 改为 _update ,请求
内容需要增加doc表示,原始 {“key”: value} ,更新 {“doc”: {“key”: value}}
post customer/_update/1
{
"doc": {
"age" : 55
}
}
查询文档
HEAD customer/_doc/1 #查看是否存储,返回200表示已存储
GET customer/_doc/1 #返回源数据的查询
GET customer/_doc/1?_source=false # 有时候只是查询,不需要具体的源文档字段
GET customer/_search # 查询所有
删除文档
DELETE customer/_doc/1 #指定文档id进行删除
# 根据查询条件删除,会先查询然后在删除,可能耗时会比较长
post customer/_delete_by_query
{
"query": {
"match": {
"age": "15"
}
}
}
中文分词器
IKAnalyzer已经推出了3个大版本,在 2012 版本中,IK 实现了简单
的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化
IK提供了两个分词算法: ik_smart:最少切分, ik_max_word:最细粒度划分
ik_smart
原始内容:传智教育的教学质量是杠杠的
GET _analyze
{
"analyzer": "ik_smart",
"text": "传智教育的教学质量是杠杠的"
}
ik_max_word
GET _analyze
{
"analyzer": "ik_max_word",
"text": "传智教育的教学质量是杠杠的"
}
自定义词库
我们输入“传智教育的教学质量是杠杠的”,但是分词器会把“传智教育”进行拆开,分为了“传”,
“智”,“教育”,但我们希望的是“传智教育”可以不被拆开。
进入elasticsearch目录 plugins/ik/config 中,创建我们自己的字典文件 yixin.dic ,并添加
内容:文章来源:https://www.toymoban.com/news/detail-850738.html
cd plugins/ik/config
echo "传智教育" > custom.dic
# 进入我们的elasticsearch目录 : plugins/ik/config ,打开 IKAnalyzer.cfg.xml 文件,进行
如下配置:
vi IKAnalyzer.cfg.xml
#增加如下内容
<entry key="ext_dict">custom.dic</entry>
重启ElasticSearch,再次使用kibana测试.文章来源地址https://www.toymoban.com/news/detail-850738.html
GET _analyze
{
"analyzer": "ik_max_word",
"text": "传智教育的教学质量是杠杠的"
}
到了这里,关于架构师系列-搜索引擎ElasticSearch(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!