ch0ngsheng / WeSearch

微信公众号后端,对微信文章进行全文索引

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WeSearch

架构图

       -----------                      ------------
       |  wechat |                      |   mysql  |
       |  server |                      |   mysql  |
       ----------                       ------------
            | http                            |
       ------------                     -------------             ------------- 
       |  manager | -- rpc create doc-> |  user-doc |  -produce-> |   kafka   |
       |  manager | -- rpc search doc-> |  user-doc |  <-consume  |   kafka   |
       ------------                     -------------             -------------
                                              |                         |
                                 rpc retrieve |                         | 
                                              |                         |
       -----------------                -------------   -----------------
       | elasticsearch |   <- store -   | retriever |      <- doc url -
       | elasticsearch |  -retrieve ->  | retriever |      - abstract ->
       -----------------                -------------

部署注意事项

总体顺序:

  • 执行deploy/init.sh创建目录,创建配置文件、证书
  • 创建docker-compose-env中的容器
  • kafka、ES配置初始化,中间件状态检查
  • 创建docker-compose中的容器

部署流程

deploy目录上传到服务器/tmp下,给init.sh添加执行权限并执行

cd /tmp/deploy
chmod +x init.sh
./init.sh

启动中间件容器

cd /tmp/deploy/wesearch
docker-compose -f docker-compose-env.yml up -d

按init.sh脚本的提示及本文档后续内容完成组件初始化工作后,最后启动go服务容器

docker-compose -f docker-compose.yml up -d

组件初始化与检查

Elasticsearch & Kibana

获取enroll token

docker exec -it elasticsearch bin/elasticsearch-create-enrollment-token --scope kibana

重置elasticsearch用户密码

docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic

使用 http://{HOST_IP}:5601 访问Kibana,使用enroll token和用户名密码登录。

参考文档:ES官方文档

对接完成后,可以在Kibana上创建index,获取APIKEY,然后配置到wesearch-retrieve服务的配置文件。

创建Index

通过Kibana创建Index。Management -> 开发工具

PUT wesearch
PUT wesearch/_mapping
{
    "_source": {
      "enabled": false
    },
    "properties": {
      "content": {
        "type": "text",
        "store":false
      }
    }
}
GET wesearch

获取APIKey

Management -> Stack Management -> API密钥

停止Kibana容器

Elasticsearch初始化完成后,可以停止Kibana容器。

docker-compose -f docker-compose-env.yml stop kibana

Kafka

创建Topic。进入1.kafka容器

docker exec -it 1.kafka bash

执行命令:

kafka-topics.sh --create --topic create-doc --partitions 1 --replication-factor 1 --bootstrap-server 1.kafka:9092
kafka-topics.sh --create --topic parse-doc --partitions 1 --replication-factor 1 --bootstrap-server 1.kafka:9092
kafka-topics.sh --bootstrap-server 1.kafka:9092 --list

Mysql

登录测试

docker exec -it mysql mysql -uroot -p123456

检查数据库及表初始化

use wesearch;
show tables;
select * from user;

Etcd

验证返回404即可。

curl --resolve 1.etcd:2379:{容器1.etcd的IP} -i https://1.etcd:2379/v2 --noproxy "*" \
--cert /home/wesearch/certs/etcd-client.crt \
--key /home/wesearch/certs/etcd-client.key \
--cacert /home/wesearch/certs/ca.crt

References

elasticsearch document

About

微信公众号后端,对微信文章进行全文索引


Languages

Language:Go 62.0%Language:Smarty 31.0%Language:Makefile 2.7%Language:Dockerfile 2.4%Language:Shell 1.9%