Elasticsearch
elasticsearch基本概念
基本概念
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21索引(index)
⼀一个索引可以理理解成⼀一个关系型数据库。
类型(type):
⼀一种type就像⼀一类表,⽐比如user表,order表。 注意:
ES 5.x中⼀一个index可以有多种type。 ES 6.x中⼀一个index只能有⼀一种type。 ES 7.x以后已经移除type这个概念。
映射(mapping):
mapping定义了了每个字段的类型等信息。相当于关系型数据库中的表结构。
字段(field):
相当于关系型数据库表的字段
集群(cluster):
集群由⼀一个或多个节点组成,⼀一个集群有⼀一个默认名称"elasticsearch"。
节点(node):
集群的节点,⼀一台机器器或者⼀一个进程
分⽚片和副本(shard):
副本是分⽚片的副本。分⽚片有主分⽚片(primary Shard)和副本分⽚片(replica Shard)之分。 ⼀一个Index数据在物理理上被分布在多个主分⽚片中,每个主分⽚片只存放部分数据。 每个主分⽚片可以有多个副本,叫副本分⽚片,是主分⽚片的复制。
docker安装elasticsearch
docker镜像安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31创建docker共享网络elastic:
docker network create elastic
安装elasticsearch7.6.2版本
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker run \
-d \
--name es7.6.2 \
--net elastic \
-p 9200:9200 \
-e discovery.type=single-node \
-e ES_JAVA_OPTS="-Xms256m -Xmx1024m"\
-e xpack.security.enabled=false \
-e cluster.routing.allocation.disk.threshold_enabled=false \
-it \
docker.elastic.co/elasticsearch/elasticsearch:7.6.2
或者安装安装elasticsearch7.10.2版本
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run \
-d \
--name es7.10.2 \
--net elastic \
-p 9200:9200 \
-e discovery.type=single-node \
-e ES_JAVA_OPTS="-Xms256m -Xmx1024m"\
-e xpack.security.enabled=false \
-e cluster.routing.allocation.disk.threshold_enabled=false \
-it \
docker.elastic.co/elasticsearch/elasticsearch:7.10.2
hanlp分词插件启用hanlp_nlp分词必要的模型文件
启用方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
241.根据analysis-hanlp插件中的README.txt文本提示:
elasticsearch-7.6.2/plugins/analysis-hanlp/data/model/README.txt
2.得知:
模型文件需要另外下载,并不包含在源码中。原因:
1、模型大多数不可读,自然不可修改
2、体积非常大,动辄上百兆,超出GitHub的限制
3、网络受限制,check out太耗时
4、不是每个人都需要CRF分词、句法分析等功能
如果你需要最新的模型文件,请访问 https://github.com/hankcs/HanLP/releases 下载对应版本的数据包。
敬请注意数据包与jar包的版本,以免发生不兼容的问题。
3.将下载好的data-for-1.7.5.zip解压,将里面data-for-1.7.5/data/model下的文件夹整体拷贝到elasticsearch-7.6.2/plugins/analysis-hanlp/data/model文件夹下,
然后 重启elasticsearch服务,重新创建索引即可。
注意:如果elasticsearch安装在docker中,拷贝到analysis-hanlp/data/model下的文件夹如果提示访问权限错误,
可以执行:chmod -R 777 * 授予读写权限即可。
注意:
es docker容器中模型文件安装(将model下的文件复制到docker对应位置,在chmod -R 777 * 授权即可):
docker cp <源路径> <目标容器名称或ID>:<目标路径>
docker cp /Users/ux/Downloads/data-for-1.7.5/data/model 6b2ffdd98edd:/usr/share/elasticsearch/plugins/analysis-hanlp/data
相关docker命令
网络组相关
1
2
3
4
5
6
7
8创建docker共享网络elastic:
docker network create elastic
#查看网络组:
docker network ls
#查看elastic网络组中的容器:
docker network inspect elastic
mac解压版本elasticsearch
下载及运行
1
2
3
4下载对应版本解压即可:https://www.elastic.co/cn/downloads/elasticsearch
注意elasticsearch不同版本所要求的jdk环境要求。
如果在linux或mac下提示权限问题,直接将bin目录下的所有文件授权即可:
进入bin: chmod -R 777 *
ES自动创建索引相关
开启自动创建索索引相关
1
2
3
4
5
6
7
8
9postman上的接口:修改auto_create_index状态
PUT请求:
http://localhost:9200/_cluster/settings
json请求体:
{
"persistent": {
"action.auto_create_index": "true" }
}
分词插件
hanlp分词插件安装
中文分词器插件一般有smartcn分词器、ik 分词器、安装hanlp分词器等。
一般来说,分词器版本要和es版本对应,具体的适配版本要看各个分词器的版本适配说明。
安装hanlp分词插件(废弃,仅参考安装方式)
1
2该种方式安装github开源打包版本,停用词等配置无法生效,不建议使用。
./elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v7.6.2/elasticsearch-analysis-hanlp-7.6.2.zip安装hanlp分词插件并默认启用hanlp停用词设置之-自己打包对应版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
341.github找到对应源码,切换到7.6.2的tag,拉取:
https://github.com/KennFalcon/elasticsearch-analysis-hanlp.git
2.源码打包方式为gradle,elasticsearch插件打包jdk版本要求为jdk13(本次使用oracle openjdk13.0.2),
注意:jdk13设置为默认环境变量,否则可能出现无法打包。同时记得在idea设置中搜索gradle,设置gradle jvm,选择oracle openjdk13。参考截图:"gradle jvm设置.png"
3.更改源码,默认启用停用词:
搜索关键词enable_stop_dictionary、enable_custom_config,更改这两个配置变量默认值为:true
4.在代码所在路径执行./gradlew assemble 命令重新打包(参见源码README.md)
5.找到打包后的插件zip:
elasticsearch-analysis-hanlp-7.6.2/build/distributions/elasticsearch-analysis-hanlp-7.6.2.zip
6.安装自己打包后的插件elasticsearch-analysis-hanlp-7.6.2.zip
安装方式一:
本地磁盘安装(必须一file://开头):
./bin/elasticsearch-plugin install file:////Users/Downloads/elasticsearch-analysis-hanlp-1.0-SNAPSHOT.zip
安装方式二:
nginx服务器资源安装(nginx配置参考下面 "nginx静态资源发布"):
./bin/elasticsearch-plugin install http://192.168.1.100:8090/elasticsearch-analysis-hanlp-7.6.2.zip
如果安装过程中出现:
Continue with installation? [y/N] 提示,选y即可。
注:如果直接将插件解压到elasticsearch的plugins目录下,则无法将插件里对应的config配置和配置文件放置到elasticsearch的conf目录下的正确位置。
7.插件安装完后需要更改插件权限,进入elasticsearch的plugins目录下,执行:
chmod -R 777 *
8.卸载插件命令:
sh ./bin/elasticsearch-plugin remove analysis-hanlpgradlejvm设置截图 
nginx静态资源发布
docker下安装nginx相关映射信息配置(仅供参考)
1
2
3
4
5
6
7
8
9
10
11docker run \
--name nginx \
-p 443:443 -p 80:80 -p 8090:8090 \
-v /Users/ux/Applications/docker/nginx/logs:/var/log/nginx \
-v /Users/ux/Applications/docker/nginx/html:/usr/share/nginx/html \
-v /Users/ux/Applications/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/ux/Applications/docker/nginx/conf:/etc/nginx/conf.d \
-v /Users/ux/Applications/docker/nginx/ssl:/etc/nginx/ssl \
-e TZ=Asia/Shanghai \
--privileged=true -d \
nginx1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17注释:
非必须参数:
--network=my-network \
--network-alias=nginx-alias \
--restart=always nginx
目录释义:注意,时区很有必要
logs:日志挂载目录
html:静态文件挂载目录
conf:配置挂载目录
ssl:证书挂载目录
network:非必须,要加入的网络
network-alias:非必须,在网络中的别名
TZ:时区
privileged:让容器对挂载目录拥有读写等特权把自己打包的hanlp分词插件zip包放在/usr/share/nginx/html下,
我本机映射的路径是/Users/ux/Applications/docker/nginx/html(我的nginx安装在docke,参见上面docker下安装nginx相关映射信息配置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#如有需要 gzip也放开即可
#gzip on;
#上传文件大小限制
client_max_body_size 1024M;
ignore_invalid_headers on;
underscores_in_headers on;
merge_slashes on;
server {
listen 8090;
server_name 192.168.2.155;
charset 'utf-8';
#静态文件
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
插件相关命令
查看插件列表
1
2
3
4
5在elasticsearch家目录执行命令-查看安装的插件列表
./bin/elasticsearch-plugin list
或进入elasticsearch的bin目录,执行
./elasticsearch-plugin list安装插件
1
2
3
4
5
6
7在elasticsearch家目录执行命令-安装插件
./bin/elasticsearch-plugin install 插件url
或进入elasticsearch的bin目录,执行
./elasticsearch-plugin install 插件url
如果直接将插件解压到elasticsearch的plugins目录下,则无法将插件里对应的config配置和配置文件放置到elasticsearch的conf目录下的正确位置。卸载插件
1
2
3
4
5
6
7
8
9
10在elasticsearch家目录执行命令-卸载插件
./bin/elasticsearch-plugin remove analysis-hanlp
或进入elasticsearch的bin目录,执行
./elasticsearch-plugin remove analysis-hanlp
analysis-hanlp即安装的插件名,可直接在elasticsearch的plugins目录下查看到。
如:smartcn插件卸载卸载:
sh ./elasticsearch-plugin remove analysis-smartcn安装 kibana 可视化(也可在edge浏览器安装“es-client”插件)
kibana
1
docker run --name kibana7.6.2 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:7.6.2
es-client
1
edge浏览器插件市场直接安装即可
参考:
https://blog.csdn.net/weixin_42171478/article/details/129078439
https://www.elastic.co/guide/en/kibana/current/docker.html
与sprngboot集成相关配置
参考demo源码
1
2https://github.com/uxawseny/esdemo.git
或对应文件夹的压缩包