写作本文时,elasticsearch 8.3.4版本已经发布,无奈此版本与nextcloud集成的文章太少,因此还是使用elastic7。实际使用效果非常好。
环境相关
- CPU:2核
- 内存:4G
- 操作系统: ubuntu 22.04 server
- java: openjdk-11-jdk
- php: 8.1
- elasticsearch: 7.17.6
- ednextcloud:24.0.6
安装java
elasticsearch依赖于java
1
| sudo apt install openjdk-11-jdk
|
安装elasticsearch
这里采用直接下载安装包来本地安装的方式。
原因是elasticsearch的中文分词插件elasticsearch-analysis-ik
只有7.17.6版本。如果使用apt的方式安装会直接安装7.17.7版本,从而不匹配而无法使用。
这也是为什么会安装elasticsearch
7.17.6
版本的原因。
下载
1
| wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.6-amd64.deb
|
安装
1
| sudo dpkg -i elasticsearch-7.17.6-amd64.deb
|
配置
1
| vi /etc/elasticsearch/elasticsearch.yml
|
在56行左右,修改成下面的形式:
1
| network.host: localhost
|
设置开机启动
1
2
3
| sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
|
测试
1
| curl -X GET "localhost:9200"
|
输出类似于下面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| {
"name" : "myhostname",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "T6xlz9vrRe7qE9D8U4We6Q",
"version" : {
"number" : "7.17.6",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "f65e1yt67dc1d07b642e14a27f338990148ee5b6",
"build_date" : "2022-08-23T11:08:48.893373482Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
|
并不需要网上说的用户名和密码什么的。
安装中文插件
- ingest-attachment
1
| /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
|
- ik分词插件
1
| /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip
|
nextcloud设置
安装搜索相关插件
full text开头的那几个,如下图几个:
设置插件
打开设置-全文搜索,如下图配置
生成索引
进入到nextcloud的安装目录下,例如/var/www/nextcloud
运行命令:
1
| sudo -u www-data php ./occ fulltextsearch:index
|
这时,可以去nextcloud里试试全文搜索了。
额外的工作
创建elasticsearch的索引服务,并开机自动启动
1
| sudo vi /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service
|
输入如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [Unit]
Description=Elasticsearch Worker for Nextcloud Fulltext Search
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/nextcloud
ExecStart=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:live -q
ExecStop=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:stop
Nice=19
Restart=always
[Install]
WantedBy=multi-user.target
|
开机自启动设置:
1
2
3
| systemctl enable nextcloud-fulltext-elasticsearch-worker.service
systemctl start nextcloud-fulltext-elasticsearch-worker.service
|
全部安装配置完成。