add API and bench doc

This commit is contained in:
shzhulin3 2021-04-07 14:51:06 +08:00
parent 5c5e9825ec
commit a1b4474015
2 changed files with 157 additions and 0 deletions

119
docs/API.md Normal file
View File

@ -0,0 +1,119 @@
检索服务接口列表
====
## 关键词搜索
----
### 接口描述
>对用户输入的关键词进行相关结果的搜索匹配,搜索结果默认按照关键词与文档的相关性得分进行排序。
### URL
```html
http://127.0.0.1/index/search
```
### Http Method
GET
### Http返回格式
JSON
### Http请求参数说明
| 参数 | 类型 | 是否必需 | 描述 |
| ------------ | ------------ | ------------ | ------------ |
| appid | int | 是 | appname对应的ID |
| key | string | 否 | 搜索查询词 |
| key_and | string | 否 | 包含全部关键词 |
| key_invert | string | 否 | 过滤关键词 |
| page_index | int | 否 | 页码 |
| page_size | int | 否 | 每页条数 |
| sort_type | int | 否 | 排序方式 |
| sort_field | string | 否 | 排序字段 |
| fields | string | 否 | 返回指定字段值 |
说明key支持多字段检索如key为”content:京东 author:张三”表示搜索content字段包含京东并且author是张三的记录其中city为应用内配置的字段名应用可以自定义字段名称。
应用的定义及支持的字段类型可参考:[项目配置文件](https://gitee.com/jd-platform-opensource/isearch#%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)
### Http返回结果说明
| 字段 | 类型 | 描述 |
| ------------ | ------------ | ------------ |
| code | int | 执行结果 |
| count | int | 结果总数 |
| result | string | 结果内容 |
### CURL调用示例
```html
curl 'http://127.0.0.1/index/search?page_index=0&key=京东&appid=10001'
```
### 成功返回示例
```json
{
"code": 0,
"count": 10,
"result": [7976,12984,11705,2572,239,474,343,290,10086,318]
}
```
### 错误返回示例
```json
{
"code": -1,
"message": "keyword is required"
}
```
## 索引上报
----
### 接口描述
>该接口上传文章内容至普通索引服务,生成普通索引表。
### URL
```html
http://127.0.0.1/index/common
```
### Http Method
POST
### Http返回格式
JSON
### Http请求参数说明
| 参数 | 类型 | 是否必需 | 描述 |
| ------------ | ------------ | ------------ | ------------ |
| appid | string | 是 | 用户组id |
| fields_count | int | 是 | 内容数量 |
| table_content | object | 是 | 内容对象 |
#### table_content的参数
| 参数 | 类型 | 是否必需 | 描述 |
| ------------ | ------------ | ------------ | ------------ |
| cmd | string | 是 | 操作类型 |
| fields | object | 是 | 文章对象 |
cmd取值包括add,delete,update。
#### fields的参数
| 参数 | 类型 | 是否必需 | 描述 |
| ------------ | ------------ | ------------ | ------------ |
| doc_id | string | 是 | 文章ID |
| weight | int | 是 | 文章权重 |
| author | string | 是 | 文章作者 |
| title | string | 是 | 文章标题 |
| content | string | 是 | 文章内容 |
### Http 返回结果说明
| 参数 | 类型 | 描述 |
| ------------ | ------------ | ------------ |
| code | int | 执行结果 |
| message | string | 信息描述 |
### CURL调用示例
```html
curl -X POST \
http://127.0.0.1/index/common \
-H 'content-type: application/json' \
-d '{
"appid": 10001,
"fields_count": 1,
"table_content": [{
"cmd": "add",
"fields": {
"doc_id": "28394556",
"weight": 218,
"author": "zhangsan",
"title": " 京东阅读电子阅读器即将上线 ",
"content": "今天小编得到了一个令人振奋的消息!它是什么呢?京东阅读官方即将推出搭载京东阅读客户端"
}
}]
}'
```
### 成功返回示例
```json
{
"code": 0
}
```

38
docs/bench.md Normal file
View File

@ -0,0 +1,38 @@
### 测试内容
本次测试是针对isearch的index_read进行的压力测试只对查询接口进行压力测试单机压力测试通过tcp进行请求。
### 测试方法
本次采用自己编译的测试工具isearchbench原理是开启多个线程每个线程依次与index_read建立tcp连接发送检索请求并等待结果返回。测试数据来源于discovery_release_article表共100w+文档,事先已经将索引导入到机器中。
### 测试目标
获取在单机部署情况下查询接口最大QPS值
### 测试环境
| 机器 | 机器编号 | 操作系统 | CPU | 内存 |
| ---- | ---- | ---- | ---- | ---- |
| isearch机器 | A | CentOS Linux release 7.2.1511 | 4核 | 8G |
| 压测脚本机器 | B | CentOS Linux release 7.2.1511 | 4核 | 8G |
| 压测脚本机器 | C | CentOS Linux release 7.2.1511 | 4核 | 8G |
### 性能测试结果
以下为压测的详细数据:
| 检索词 | 机器数 | 每台机器进程数 | 总进程数 | 每个进程开启线程数 | 每个线程请求数 | 总请求数 | 总耗时(平均) | index_read进程cpu | cache进程cpu | qps |
|-----|-----|---------|------|-----------|---------|--------|---------|---------|----------|-------|
| 京东 | 2 | 2 | 4 | 200 | 500 | 400000 | 37s | 98% | 35% | 10272 |
| 京东 | 2 | 2 | 4 | 200 | 1000 | 800000 | 84s | 98% | 35% | 9574 |
以下为压测时通过top查看index_read进程所在机器的信息
![bench-top](http://storage.jd.com/search-index/image/bench-top.png)
以下为请求曲线:
![bench-curve](http://storage.jd.com/search-index/image/bench-curve.png)
可以得出index_read进程的qps最高为10272。