mkdocs 配置 Elasticsearch

  • mkdocs 配置 Elasticsearch

按照 https://imququ.com/post/elasticsearch.html

除了 elasticsearch.yml 里不需要再配置 analyzer,现在新版本是在建 index 的时候放到 setting 字段里 https://github.com/elastic/elasticsearch/issues/2630

分词插件在 https://github.com/medcl/elasticsearch-analysis-ik

ubuntu 上面按照官网的来直接 apt 装,比 docker 还方便(雾)

后端

用 express 封装了一下搜索和查询结果(main.js)

关于 cors,还是被坑了一下,在 oi-wiki.org 搜的时候,存到了 cache 里,再用别的域名搜的时候,就会被 cors 给拦住。需要加上 add_header 'Vary' "Origin";,来告诉 client side 这个 cors 的域名可能会有多种情况。

前端

主要改的 assets/javascripts/components/Material/Search/Result.jsx,因为不想每打一个字就发一个请求,就给 delay 了一下,参见 https://github.com/Ir1d/mkdocs-material/tree/es

es 配置

导入

(init.js)

client.bulk 是个好东西

搭配 github webhook

用的是 modifiedremoed 字段,过程和导入类似。

字段

分别是 h1, h2, content(全文), url(方便前端直接调,其实写在 express 也行,当时没考虑那么多)

由于全文之前是 markdown 文档,这里是用 strip-markdown-math 给 markdown 格式删一删(不过还剩了很多空行没删掉= =),由于 strip-markdown 不删掉数学公式(remark-math 是外部插件),所以我就封装(fork)了下。

相关代码:https://gist.github.com/Ir1d/eb1cc5d749be93238f3a4118156e5b5b