官方网站: https://www.elastic.co/cn/elasticsearch/
ES聚合可以对数十一行日志数据进行聚合分析, 套索数据的趋势和规律;
全文检索是指:
相当于数据表中的字段, 对文档数据根据不同属性进行的分类标识;
每一个字段都应该有一个对应的类型, 例如: Text, Keyword, Byte等;
操作系统: centos7
ES不能使用root用户, 必须使用普通用户来安装启动;
创建一个es专门的用户
useradd esuser
passwd es123
执行visudo
打开用户权限管理文件
esuser ALL=(ALL) ALL
下载地址: https://www.elastic.co/cn/downloads/elasticsearch
在服务器上创建es
目录, 并修改owner为esuser用户
mkdir -p /export/server/es
chown -R esuser /export/server/es
# 解压ES
su esuser
cd /export/software
tar -zvxf elasticsearch-xxx.tar.gz -C /export/server/es/
使用esuser
用户来修改配置文件
cd /export/server/es/elasticsearch-xxx/config
mkdir -p /export/server/es/elasticsearch-xxx/log
mkdir -p /export/server/es/elasticsearch-xxx/data
rm -rf elasticsearch.yml
elasticsearch.yml
clister.name: elasticsearch
node.name: node1
path.data: /export/server/es/elasticsearch-xxx/data
path.log: /export/server/es/elasticsearch-xxx/log
network.host: node1
http.port: 9200
discovery.seed_host: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
ps: node(x): 为节点地址(域名或ip)
clister.name: 集群名称
node.name: 当前节点名称
path.data, path.log: 数据和日志目录
network.host: 当前网络地址
http.port:服务端口号
discovery.seed_host: 互相发现的地址列表
cluster.initial_master_nodes:初始化master节点列表
bootstrap.system_call_filter: 系统调用过滤
bootstrap.memory_lock: 内存锁定
http.cors.enabled, http.cors.allow-origin: 跨域相关, 开放
修改jvm.option配置文件, 调整jvm堆内存大小
/export/server/es/elasticsearch-xxx/config/ jvm.options
-Xms2g
-Xmx2g
由于现在使用普通用户来安装es服务, 且es服务对服务器要求的资源比较多, 包括内存大小, 线程数等, 所以, 需要给esuser解开资源的束缚;
问题错误信息:
max file descriptors[4096] for elasticsearch process likely too low, increase to at least [65536]
es因为需要大量的创建索引文件, 需要大量的打开系统的文件
sudo vi /etc/security/limits.conf
添加如下内容:
ps: *
不要去掉
..... # 原本的内容
* soft nofile 65535
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
# End of file
修改此文件后, 需要重新登录用户
问题错误描述:
max number of threads [1024] for user [esuser] likely too low, increase to at least [4096]
/etc/security/limits.d/20-nproc.conf
* soft nproc 1024
# 修改为:
* soft nproc 4096
问题错误描述
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least[262144]
手动执行命令:
sudo sysctl -w vm.max_map_count=262144
修改系统文件(重启后不必在修改)
/etc/sysctl.conf
# 最后一行
vm.max_map_count-262144
使用esuser
用户来执行
nobup /export/server/es/elasticsearch-xxx/bin/elasticsearch 2> &1 &
使用jps
可以看到es服务进程
访问 http://node1:9200/?pretty
可以看到一些信息
镜像地址: https://hub.docker.com/_/elasticsearch
相关文档: https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html
文档网站: http://mobz.github.io/elasticsearch-head/
项目地址: https://github.com/mobz/elasticsearch-head
需要使用ES来进行中文分词, 所以要单独给ES安装IK分词器插件:
esuser
, 并在es安装目录下的/plugin
目录下创建 ik
目录mkdir -p /export/server/es/elasticsearch-xxx/plugin/ik
unzip elasticsearch-analysis-ik-xxx.zip
使用docker启动, 将ik分词器解压到本地;
macOS会在本地的plugin目录中生成一个文件, 会影响es的启动;
注意版本要一致!!!
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v /docker/elasticsearch/plugin:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" elasticsearch
使用新版的ES需要密码登录: https://blog.csdn.net/u012999325/article/details/105451855
在VScode中安装elasticsearch for vscode插件
插件地址: https://marketplace.visualstudio.com/items?itemName=ria.elastic
POST _analyze
{
"analyzer": "standard",
"text": "我爱你中国"
}
结果:
{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "" ,
"position": 0
},
{
"token": "爱",
"start_offset": 1,
"end_offset": 2,
"type": "" ,
"position": 1
},
{
"token": "你",
"start_offset": 2,
"end_offset": 3,
"type": "" ,
"position": 2
},
{
"token": "中",
"start_offset": 3,
"end_offset": 4,
"type": "" ,
"position": 3
},
{
"token": "国",
"start_offset": 4,
"end_offset": 5,
"type": "" ,
"position": 4
}
]
}
使用ik分词器
POST _analyze
{
"analyzer": "ik_max_word", // 尽可能多的分词
"text": "我爱你中国"
}
结果:
{
"tokens": [
{
"token": "我爱你",
"start_offset": 0,
"end_offset": 3,
"type": "CN_WORD",
"position": 0
},
{
"token": "爱你",
"start_offset": 1,
"end_offset": 3,
"type": "CN_WORD",
"position": 1
},
{
"token": "中国",
"start_offset": 3,
"end_offset": 5,
"type": "CN_WORD",
"position": 2
}
]
}