- A+
WordPress自带的搜索功能实在有点弱了,不仅容易给数据库增加查询负担,而且搜索出来的结果还不一定准确,很难满足于我们日常的Wordpress站内搜索需求。于是强化Wordpress默认搜索就非常有必要了,之前有分享过用Algolia给WordPress添加实时站内搜索功能。
Algolia是一个专业的第三方搜索服务商,Algolia接入Wordpress非常方便,官方也提供了插件直接启用即可。Algolia作为Wordpress的默认搜索,不仅搜索质量高、结果准,而且还是即时搜索,可以完美整合到Wordpress,推荐给土豪朋友使用。
为什么说要推荐给土豪朋友使用?原因是Algolia虽然也有免费的搜索额度,但是额度太低了,低到只能满足一个小博客使用,企业用户建议使用Algolia的专业版,可以省去一笔自建搜索的费用。Algolia作Wordpress的搜索具体效果请参考wzfou.com右上角搜索功能。
这篇文章主要是来分享一下如何利用Elasticsearch来自建Wordpress搜索,采用docker方式安装elasticSearch,kibana和ik分词器。过程非常地简单,更多的Wordpress建站教程,这里有:
- WordPress文章目录侧边固定滚动-Easy
Table 和LuckyWP Table插件 - WordPress子主题创建与使用方法-防止修改过的CSS,JS和代码失效
- 让图片飞一会儿!网站图片WebP格式批量转换设置及加速效果体验
一、Elasticsearch准备工作
1.1 准备一台VPS
不建议将Elasticsearch与Wordpress安装在同一台VPS主机上,这样有一定的风险,建议实行搜索与WP分离保证安全。便宜的VPS主机可以参考这里:VPS主机排行榜单,内存越大越好,实测1GB的内存运行流畅。
1.2 准备好docker
首先,你需要先安培安装 Docker CE (社区版)和Docker
Compose,以下命令是基于Debian系统的演示,如果你是CentOS、Ubuntu,请参考官网:
安装 Docker CE
(社区版):https://docs.docker.com/install/linux/docker-ce/ubuntu/安装 Docker
Compose:https://docs.docker.com/compose/install/#install-compose
Debian 9系统安装Docker CE 和Docker Compose如下:
二、安装elasticSearch及插件
2.1 docker装elasticSearch
镜像:
- https://hub.docker.com/_/elasticsearch
docker装elasticSearch非常地简单,只需要一个命令:
2.2 docker安装kibana
镜像:
- https://hub.docker.com/_/kibana
docker安装kibana也是一行命令,如下:
如下图:
2.3 启动ES和kibana
在开发模式下直接使用以下命令启用即可:
打开你的浏览器访问:IP+9200
,可以看到elasticSearch启动成功。
打开你的浏览器访问:IP+5601
,可以看到kibana启动成功。(如果提示未准备好,请稍等一会儿)
这是5.6.11版本的kibana:
2.4 安装ik分词器
项目:
- https://github.com/medcl/elasticsearch-analysis-ik/releases
使用以下命令可以安装ik分词器:
如下图:
2.5 Compose启动
在正式的使用环境里,建议使用Docker-Compose启动elasticSearch及插件,首先是创建yml文件:vim docker-compose.yml
,填写以下内容:
然后后台启动elasticSearch及插件:
三、WP整合Elasticsearch
插件:
- https://wordpress.org/plugins/elasticpress/
- https://github.com/10up/ElasticPress
WordPress强大之处在于有着非常多的插件,Elasticsearch就是一个整合elasticSearch搜索到Wordpress的插件,下载插件后填写你的elasticSearch地址。
也可以在wp-config.php指定:
保存后elasticSearch插件会自动添加索引,你也可以在设置中给不同的文件、分类、标签等设置启用或者不启用索引。(点击放大)
另外,插件还提供了权重设置,请根据自己的需求来调整,确保搜索结果更加精准。(点击放大)
四、可能存在的问题
4.1 虚拟内存太小
启用Elasticsearch时可能会提示虚拟内存不足,解决办法如下:
4.2 同名容器存在
解决办法就是列出所有容量,存在同名的给予删除,如果正在运行则先Kill再删除:
4.3 Docker常用命令
Docker常用基本命令如下:
五、总结
Elasticsearch建立了索引之后,下次我更新Wordpress的文章或者评论时就会自动更新索引了,特别需要提醒的是如果你的Wordpress有运行Redis等缓存请关闭,否则会造成PHP死循环。
检测Elasticsearch有没有生效的办法就是到你的Wordpress前台搜索关键字,看看有没有自动建议或者精准结果,一般来说启用了插件后搜索出来的结果都调用的Elasticsearch的索引内容。
文章出自:挖站否 https://wzfou.com/elasticsearch/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫