2022年1月21日更新

痛下决心把服务器升级到了2g内存,elasticsearch服务还是启动失败,于是按照下面的方法重新安装了一遍之后服务倒是能够正常运行了。
几个扩展都开启,打开搜索之后报错,突然想起在官方文档中提到了如果使用git方式安装的话,需要执行composer install --no-dev
再次使用搜索,结果变成了“搜索时发生错误:由于出现暂时性的问题,我们未能完成您的搜索。请稍后再试。(An error has occurred while searching: We could not complete your search due to a temporary problem. Please try again later.)”。
mediawiki_search_result_has_template.png
原来在配置CirrusSearch扩展时还有几个重要的步骤,之前虽然执行了,但是没有记录于本文中,所以时间一长给忘了。
安装完所有扩展之后,在LocalSettings.php文件中加入:

 wfLoadExtension( 'Elastica' );
 wfLoadExtension( 'CirrusSearch' );
 $wgDisableSearchUpdate = true;

然后通过终端,在CirrusSearch的扩展安装目录中,输入:

php UpdateSearchIndexConfig.php

运行完毕后,从LocalSettings.php文件中删除$wgDisableSearchUpdate = true;,而后在终端中依次输入:

php ForceSearchIndex.php --skipLinks --indexOnSkip
php ForceSearchIndex.php --skipParse

重新回到搜索页面,错误消失了。
但是,中文分词的问题没解决,搜索功能还是稀烂。

参考文档:https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/README

2022年1月19日更新

自打elasticsearch的中文分词搞失败后,就把CirrusSearch给删了,刚开始也没注意有啥问题,直到条目渐多,模板用的也比较多,然后发现搜索结果竟然没有展开模板,而是直白地显示出来了。
mediawiki_search_result_has_template.png
看来还是要把CirrusSearch请回来。

2021年2月16日更新

这两天用虚拟机重装了一遍MediaWiki,服务器配置跟阿里的一样,1核1g,安装elasticsearch服务竟然运行成功了,还没出现死机,CirrusSearch的维护代码运行下来也是一切顺利。
然后希望的火苗再一次被点燃了,既然本地虚拟机可以实现,那远程服务器凭啥就不行(心里打鼓)?
综合网上的几个问题贴,其中有一个提到删除/var/lib/elasticsearch/nodes/0/node.lock文件后重新安装就OK了。而另外一个关于完全删除elasticsearch的帖子中提到了几个有关的目录,干脆也删了。
删完上面几个还是不放心,毕竟之前是安装了7.x后降版本重装的,或许还有其他残留,用find命令再搜了一遍

find / -name "elasticsearch"

删掉了所有该删的,重新安装,终于成功了。
最后记得改一下-Xms和-Xmx的内存大小,否则就我这简陋的配置会卡到怀疑人生。

参考文档

https://discuss.elastic.co/t/failed-to-start-elasticsearch-code-exited-status-1-failure/217898/10
https://discuss.elastic.co/t/uninstall-elsticsearch-on-centos/42864

2021年1月30日更新

服务器重装系统后,所有的配置工作都在逐渐恢复,但是一直没想到搜索插件,因为站点的内容太少,使用率不高。直到最近有人问起才重新捡起来,结果发现原文的内容存在很多问题误导了部分朋友,在这里说声对不起!
截至到目前,CirrusSearch的推荐安装版本为v6,v7版本因为默认不再支持指定索引类型而产生Root mapping definition has unsupported parameters:错误。
对于小内存(小于等于1G)的服务器可能造成服务无法启动的情况(v6版运行数秒后挂了)或因默认配置文件中-Xms和-Xmx的设置为1g造成服务超时(v7版)。
如果你不幸按照我之前的文章而导致无法使用CirrusSearch,请重新安装v6版本,具体方法如下:

一、卸载v7版本

如果你跟我之前一样用的是yum安装方式,那么直接

# yum remove elasticsearch

注意:卸载后记得要删除/etc/systemd/system/目录的elasticsearch.service,否则重装6.x版之后service的配置内容还是用的7.x版,然后导致服务启动出错。

二、修改RPM资源库

修改/etc/yum.repos.d/elasticsearch.repo文件,将原来的7.x改为6.x即可。

[elasticsearch]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

修改后运行

# yum clean all

注意:只有清空yum并重载才能正确安装6.x版本,否则会报错。

三、安装elasticsearch

# yum install -y elasticsearch-6.5.4

指定版本号为6.5.4,官方推荐版本见下面:

MediaWiki 1.29.x and 1.30.x require Elasticsearch 5.3.x or 5.4.x.
MediaWiki 1.31.x and 1.32.x require Elasticsearch 5.5.x or 5.6.x.
MediaWiki 1.33.x, 1.34.x and 1.35.x require Elasticsearch 6.5.x (6.5.4 recommended).

四、修改-Xms和-Xmx

# vim /etc/elasticsearch/jvm.options

默认-Xms和-Xmx为1g,可以根据自己需要修改。
五、启用服务
接下去就是把elasticsearch加入到服务中

# systemctl daemon-reload
# systemctl enable elasticsearch.service

运行一下服务(启动或停止)

# systemctl start elasticsearch.service
# systemctl stop elasticsearch.service

虽然能够启动,但是运行几秒之后就挂掉了。而v7.7以上版本的堆内存使用量显著降低,几乎提升了 7 倍 ,也就是为什么在原文中能够运行的原因。

原文

知乎上有朋友问我说,“mediawiki自带的搜索太烂了,请问怎么改善?”虽然我不太确定这个太烂指的是什么,不过官方倒是有款高级搜索器的插件,样子就如下图,有兴趣的也可以直接去维基上直接体验。
AdvSearch_Screen_20170620.png
虽然就目前来说,我对搜索的要求还没那么高,毕竟条目太少,而且还全部都是我自己创建的条目。不过既然今天想到这个问题,不如就试着安装一下好了。
下载地址和安装说明都可以参考官网。虽说是英文的,但基本上我们也能看明白,在安装前必须有Extension:CirrusSearch的支持,而后面这个插件呢又需要用到Elasticsearch服务和另一个插件Elastica,真的是一环扣一环。
好了,安装顺序已经确定,Elasticsearch服务->Extension:Elastica->Extension:CirrusSearch->Extension:AdvancedSearch。

一、安装Elasticsearch

Elasticsearch的官网上有很详细的安装教程(包括CentOS)。基本上按照官方的指导,耐心点都能安装成功。以下是根据本人实际的系统CentOS7来介绍安装步骤。

1. 安装OpenJDK

在开始前,我们还有一件重要的事要做,就是先安装OpenJDK到我们的系统中。

sudo yum install java-1.8.0-openjdk.x86_64

执行后,检查一下安装的结果

java -version

返回结果如下:

Output of java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

2. 下载和安装Elasticsearch的公共签名密钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

3. 从RPM资源库中安装

/etc/yum.repos.d/目录下创建elasticsearch.repo文件,输入如下代码:

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

elasticsearch的资源库就建好了,接下来的工作就更简单了,直接用yum命令安装。不过在安装前最好用Screen命令创建一个会话,毕竟安装包要好几百兆,而阿里云的下载速度极慢,预计要一个晚上的时间,所以为了避免中间有什么幺蛾子出现还是多增加一步。

screen -S Elastica

OK,现在可以开始安装了。

sudo yum install --enablerepo=elasticsearch elasticsearch

install-elasticsearch.png
慢慢等吧,我先洗洗睡了,明天继续。
install-elasticsearch-complete.png
经过一个晚上,终于安装完毕。接下去就是把elasticsearch加入到服务中

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

运行一下服务(启动或停止)

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

运行过程没有任何提示,所以我们还需要再检验一下运行结果:

curl -X GET "localhost:9200/?pretty"

控制台将返回以下结果:

{
  "name" : "iZ2362n1jwgZ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Zj17b7UmQXeqj8IhwUM_yA",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

至此,elasticsearch就算是安装好了,如果你需要配置elasticsearch,用文本编辑器打开/etc/sysconfig/elasticsearch(仅针对RPM安装方式)就可以了,具体见官网说明

二、安装插件

MediaWiki的插件安装就简单多了,无非就是下载插件压缩包,解压后上传到插件目录然后再修改配置文件启用。
如果elasticsearch的安装没有任何问题,那么我们可以将三个插件ElasticaCirrusSearchAdvancedSearch全部下载完后一起上传到服务器中,然后打开配置文件LocalSettings.php,在其中加入以下内容:

## 启用高级搜索
wfLoadExtension( 'Elastica' );//CirrusSearch必需
wfLoadExtension( 'CirrusSearch' );//AdvancedSearch必需
wfLoadExtension( 'AdvancedSearch' );

上传覆盖服务器中的配置文件,然后重新刷新服务器,试着搜索一下内容。
MediaWiki-AdvancedSearch.png
看上去果然高大上一点了。

参考文档:

Install Elasticsearch with RPM

相关文章

Elasticsearch服务超时,启动失败

最后修改:2022 年 01 月 21 日
如果觉得我的文章对你有用,请随意赞赏