当前位置: 首页 > news >正文

wikijs如何增加全文搜索的功能,增加对应的索引(Win11环境+docker+数据库elasticSearch)

前言

本文是Win11下轻松搭建wiki.js,Docker.desktop部署指南(mysql+elasticsearch+kibana+wiki.js)的后续文章,需要在win11的docker环境中部署了elasticSearch和wikijs后才能按照操作完成设置。

elasticSearch版本:8.18.0(包括kibana、ik分词器)
wikijs版本:2.5.307
mysql版本:9.2.0(不过和本文关联不大)

提前准备

在本文中,如无特殊说明,所有需要输入指令的地方都为docker.desktop终端的terminal(其实就是powerShell),下图红框处点一下即可打开。输入docker,没有出现报错时,就算准备完成了。如果出现报错,检查一下你的环境变量是否有把docker加进去,这部分请百度解决。
在这里插入图片描述

索引功能

我们先介绍一下索引这个功能吧,因为我们的全文搜索功能就是基于索引实现的。

我们做一个简单的比喻,想象一下一个巨大的图书馆:

  1. 书的内容 = 您 WikiJS 中的所有文章和页面(存储在数据库中)
  2. 图书馆管理员 = Elasticsearch(搜索引擎)
  3. 索引 = 图书卡片目录

一开始我们没有索引的时候,如果你要某本书里面是否有出现“猫头鹰”这个词,那么图书馆管理员就只能对着你的所有的书,一本一本的去查,这本有没有,那本有没有。而且你每搜索一次,他就要对着所有的书都这样翻一遍,耗时太长。

所以为了查起来方便,图书管理员想了一个好办法,就是他会一开始就把图书馆里面所有的书都翻一遍,为每本书都制作一个图书卡片。当你再想去查"猫头鹰"的时候,他只要把他手边m开头的所有图书卡片拿起来,然后找到猫头鹰的卡片,再把这个卡片里面写的所有对应的书然后全部列给你就行了。

1. 在es中配置ik分词器

为了防止有人还没有配置ik分词器,先把配置的方式列在这边,已配置的可以跳过这一段。

首先进入这个网页(下面的安装指令能正常执行的话跳过这一步也行)
https://github.com/infinilabs/analysis-ik/releases/tag/Latest

页面往下翻,直到出现红框这一部分,把其中的指令复制下来
在这里插入图片描述

输入指令

# 进入 Elasticsearch 容器
docker exec -it es /bin/bash# 安装ik分词器,就是你刚刚复制的那个指令,但是版本号要改成你es的版本号,文章是8.18.0
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.18.0

最后重启一下es容器即可。
在这里插入图片描述

2. 在es中配置索引

# 进入 Elasticsearch 容器
docker exec -it es /bin/bash

先查询一下到时候要起的索引名字是不是已经被占用了,比如说我计划起的名字就是wiki。

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

如果发现已经被使用,也就是有返回内容的话,就先删除掉,然后准备重新创建一个

curl -X DELETE "localhost:9200/wiki"

创建索引的指令如下:

curl -X PUT "localhost:9200/wiki" -H 'Content-Type: application/json' -d'
{"settings": {"analysis": {"analyzer": {"default": { "type": "ik_smart"}}}}
}
'

最后再查询一下是否创建成功,成功就没问题了。

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

2.1 指令说明

本文提供的索引规则,只是最基础的功能,可能不一定能完全满足实际需要,文章侧重重点在于从0-1的走完这个索引的部署链路。

为了方便后续我们自己学习和迭代索引规则,对这个最简单的创建和查询索引的指令进行说明。

指令说明
curl -X固定前缀,对elasticSearch进行http请求
DELETE/GET/PUT不同的指令,删除获取添加,很好理解
localhost:9200/wiki/url,/后面是索引的名称
/_mappingGET时的具体操作,有固定的写法,_mapping表示查看结构,_search表示搜索,_count表示计数等
?_prettyGET时固定附加写法,让返回数据以json串的结构返回
-H ‘Content-Type: application/json’-H表示请求头,后面的文本是固定写法,表示我们的请求内容格式是json串
-d { }表示请求体,d是detail的缩写

了解这些基础内容之后,后续有想要实现的指令,直接去问deepseek就行,他会帮我们生成指令的,我们只要能看得懂就行。

3. 在wikijs中使用索引

进入我们的wikijs网页,登录管理员账号,进入管理员页面。点击搜索引擎
在这里插入图片描述
在搜索引擎页面如下配置:

  1. 先选择ElasticSearch。
  2. 版本号根据实际来,然后Host固定填入:http://es:9200
  3. IndexName索引名称就是我们上一节创建的名称,文章中是wiki。
  4. Analyzer固定填入你在上一节中请求体内analyzer中的部分,这里是ik_smart。
  5. 然后点击右上角的应用,再点一下重建索引,完成。
    在这里插入图片描述

参考资料

DeepSeek


文章转载自:

http://s3OIRpco.fypgL.cn
http://15Ud9QbN.fypgL.cn
http://kfkQxJ6p.fypgL.cn
http://wdNNltFb.fypgL.cn
http://hzhQuTfr.fypgL.cn
http://dRJio3l0.fypgL.cn
http://m45TgMsd.fypgL.cn
http://6C1nXDko.fypgL.cn
http://4mIMCu9R.fypgL.cn
http://yT1jtGwi.fypgL.cn
http://Z2CUMIbL.fypgL.cn
http://xvwL1hny.fypgL.cn
http://sWsvmi1q.fypgL.cn
http://RfBkUwX2.fypgL.cn
http://pn9GuP7P.fypgL.cn
http://eAdKHUG6.fypgL.cn
http://ImcYE9HC.fypgL.cn
http://asIPOWwV.fypgL.cn
http://qIDYCYqe.fypgL.cn
http://8x8VGL6w.fypgL.cn
http://lBiTIdrC.fypgL.cn
http://jT65lzie.fypgL.cn
http://GptnTKoe.fypgL.cn
http://aNciQZWv.fypgL.cn
http://DqrErDUZ.fypgL.cn
http://NIeSNCZr.fypgL.cn
http://Y7YIb9rW.fypgL.cn
http://XCoxROJA.fypgL.cn
http://2fQishmO.fypgL.cn
http://rz2AJvBK.fypgL.cn
http://www.dtcms.com/a/378463.html

相关文章:

  • 企业远程访问方案选择:何时选内网穿透,何时需要反向代理?
  • go中的singleflight是如何实现的?
  • 计算机毕业设计 基于Hadoop的南昌房价数据分析系统的设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试
  • 在Cursor里安装极其好用的Mysql Database Client 插件
  • C# .NET EFCore 性能优化
  • STM32--时间戳,BKB,RTC
  • Spring Cloud Consul
  • 基于K210和STM32的小区门禁系统(论文+源码)
  • 区块链与分布式账本:重构数字世界的信任基石
  • Java 编程语言详解:从基础到高级应用
  • 在centOS源码编译方式安装MySQL5.7
  • STM32H750 QSPI介绍及应用
  • 【Luogu】P9809 [SHOI2006] 作业 Homework (根号算法)
  • Linux Node.js 安装及环境配置详细教程
  • Node.js介绍与安装
  • Node.js 版本管理全指南:卸载 Node、安装 NVM、常用命令及问题解决
  • 如何在ONLYOFFICE中使用OCR工具:轻松识别图片和PDF中的文字
  • 专题:2025社交媒体营销与电商融合趋势报告:抖音、小红书、短剧、直播全拆解|附210+份报告PDF、数据仪表盘汇总下载
  • Ubuntu22.04如何安装新版本的Node.js和npm
  • Java根据模版导出PDF文件
  • 经济学研究与机器学习应用:R语言实证分析及论文写作指南
  • 洛谷 P1967 [NOIP 2013 提高组] 货车运输(kruskal 重构树 + 求路径最小边权)
  • android 如何判定底部导航栏显示时 不是键盘显示
  • Django入门笔记
  • 中悦大华通过订单日记实现流程重构之路
  • 电波之外:socket套接字,Linux下UDP通信的孤独诗篇
  • 自动驾驶中的传感器技术44——Radar(5)
  • Linux常用命令之top:动态进程排查利器
  • 【Problem】动态规划之跳跃游戏系列
  • Android 相机框架的跨进程通信架构