一. 卸载原有elasticsearch # 查看安装的软件 dpkg -l | grep elastic #查看安装关联 dpkg -L elasticsearch #移除安装软件 dpkg -P elasticsearch #继续查看未卸载的目录和文件 find ./ elasticsearch | grep elasticsearc #移除目录和文件具体参考自己的环境 rm -r /var/lib/elasticsearch rm /var/lib/dpkg/info/elasticsearch.* rm /etc/default/elasticsearch rm /etc/default/elasticsearch rm /etc/init.d/elasticsearch #在此查看是否有关联的目录和文件 find ./ elasticsearch | grep elasticsearch 二. 加载ES docker 文件 1. 创建ES工作文件夹 mkdir -p /mydata/elasticsearch/ 2.上传es6.7.1.tar包到上面文件夹并加载docker镜像 cd /mydata/elasticsearch/ docker load < es6.7.1.tar 3.创建挂载ES工作文件夹 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data mkdir -p /mydata/elasticsearch/plugins echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml 4. 非常重要,给上面创建文件夹赋予写权限 chmod -R 777 /mydata/elasticsearch/ 5.创建容器并启动(注意将下列命令最后的elasticsearch:6.7.1改为加载后的imageId) docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:6.7.1 在浏览器里输入 localhost:9200可验证是否正常启动 6. 修改下列文件解决跨域问题 vim /mydata/elasticsearch/config/elasticsearch.yml 在文件最后添加以下两行并保存 http.cors.enabled: true http.cors.allow-origin: "*" 7. 定位至网盘目录 /var/www/html 执行以下命令 sudo -u apache php ./occ fulltextsearch:index 如果首次执行失败后,先执行以下重置命令再执行上条命令 sudo -u apache php ./occ fulltextsearch:reset 8.等待索引及数据生成 9. 数据生成后即可在网盘页面搜索相关文件 10. 加载elastichd.tar文件用来以可视化页面来监测ES状态 docker load < elastichd.tar docker run -p 9800:9800 -d --link elasticsearch:demo containerize/elastichd 访问地址为:http://localhost:9800 六、创建并启动持续索引服务 由于全文索引需要不停的进行(因为有新的文件进来),做成centos服务 在 /etc/systemd/system/ 目录下创建 nextcloud-fulltext-elasticsearch-worker.service 文件,文件内容如下(用到MySql服务): [Unit] Description=Elasticsearch Worker for Nextcloud Fulltext Search After=network.target mysql.service Requires=mysql.service [Service] User=www Group=www WorkingDirectory=/www/wwwroot/test.wxlcloud.com/nextcloud ExecStart=/usr/bin/php /www/wwwroot/test.wxlcloud.com/nextcloud/occ fulltextsearch:live -q ExecStop=/usr/bin/php /www/wwwroot/test.wxlcloud.com/nextcloud/occ fulltextsearch:stop Nice=19 Restart=always [Install] WantedBy=multi-user.target 开机启动: systemctl enable nextcloud-fulltext-elasticsearch-worker.service systemctl start nextcloud-fulltext-elasticsearch-worker.service nextcloud16 es7.3 全文检索 nextcloud 安装3个app 插件 Full text search Full text search - Elasticsearch Platform Full text search - Files 设置插件 设置->全文检索->Servelet地址:http://localhost:9200/ 设置->全文检索->[高级] 分析器tokenizer: ik_smart 安装ES插件 # ingest-attachment /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment #安装IK分词 /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip 初始化索引 cd /var/www sudo -u nginx ./occ fulltextsearch:index 创建并启动服务 由于全文索引需要不停的进行(因为有新的文件进来),做成centos服务 vi /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service 修改目录 user group 内容 [Unit] Description=Elasticsearch Worker for yunpan Fulltext Search After=network.target [Service] User=apache Group=apache WorkingDirectory=/var/www/html ExecStart=/usr/bin/php /var/www/html/occ fulltextsearch:live -q ExecStop=/usr/bin/php /var/www/html/occ fulltextsearch:stop Nice=19 Restart=always [Install] WantedBy=multi-user.target #开机启动 systemctl enable yunpan-fulltext-elasticsearch-worker systemctl start yunpan-fulltext-elasticsearch-worker 问题 pipeline with id [attachment] does not exist │ Error: 2/2 │ Index: files:478 │ Exception: Elasticsearch\Common\Exceptions\BadRequest400Exception │ Message: pipeline with id [attachment] does not exist 重建索引 cd /var/www sudo -u nginx ./occ fulltextsearch:reset sudo -u nginx ./occ fulltextsearch:index Search platform (Elasticsearch) down ? 启动ES systemctl start elasticsearch ,当然你需要稍微等一下他启动 In IndexService.php line 253: please add ingest-attachment plugin to elasticsearch In IndexService.php line 253: please add ingest-attachment plugin to elasticsearch 安装插件 /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment The current PHP memory limit is below the recommended value of 512MB 编辑php.ini memory_limit = 512M php The posix extensions are required yum install php-process -y 参考 https://github.com/nextcloud/fulltextsearch/wiki/Basic-Installation Live index service (will work with NC 14 and later) To have your files continuously indexed, you'll need to run fulltextsearch:live. This can be easily achieved on systems running systemd with an unit /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service file like this (make sure to adjust WorkingDirectory and path to occ): [Unit] Description=Elasticsearch Worker for yupan Fulltext Search After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/html/yunpan ExecStart=/usr/bin/php /var/www/html/yunpan/occ fulltextsearch:live -q ExecStop=/usr/bin/php /var/www/html/yunpan/occ fulltextsearch:stop Nice=19 Restart=always [Install] WantedBy=multi-user.target Note: If you have errors after a system reboot, maybe you have to add your database server to the After and Requires statements. Note: For mysql or mariadb it looks like: [Unit] Description=Elasticsearch Worker for Nextcloud Fulltext Search After=network.target mysql.service Requires=mysql.service ... Enable and start: systemctl enable yunpan-fulltext-elasticsearch-worker.service systemctl start yunpan-fulltext-elasticsearch-worker.service Note: If you want to index external SMB shares, add this to /usr/lib/tmpfiles.d/samba.conf: d /var/run/samba 2775 root www-data - -