介绍
MeiliSearch是一个功能强大,快速,开源,易于使用和部署的搜索引擎。搜索和索引都是高度可定制的。允许输入、过滤器和同义词等特性都是开箱即用的。是近两年开源的项目,同样也支持中文分词,在小数据规模下可以实现比ElasticSearch更加快速和易用的搜索体验。更多安装、配置、使用等细节请参考官方文档或交友网站
HTTP方式操作索引
- 创建索引
POST http://192.144.228.170:7700/indexes
{
"uid" : "product",
"primaryKey": "id"
}
注:uid是必需的字段
- 查询所有索引信息
GET http://192.144.228.170:7700/indexes
- 查询单个指定索引信息
GET http://192.144.228.170:7700/indexes/product
- 更新索引
PUT http://192.144.228.170:7700/indexes
{
"uid" : "product",
"primaryKey": "id"
}
注:uid是必需的字段
- 删除索引
DELETE http://192.144.228.170:7700/indexes/product
HTTP方式操作文档
- 添加或替换文档
说明:如果文档id存在,则替换文档,如果指定的索引不存在,则自动创建索引
POST http://192.144.228.170:7700/indexes/product/documents
[
{
"id": "1",
"name": "GoLang",
"desc": "互联网时代的C语言",
"father": "Ken Thompson",
"company": "Google"
},
{
"id": "2",
"name": "Python",
"desc": "人生苦短,我用Python",
"father": "Guido van Rossum"
},
{
"id": "3",
"productName": "手机",
"品牌": "xiaomi",
"价格": "4299",
"desc": "让天下没用难用的手机"
}
]
- 添加或更新文档
说明:如果id存在,则更新文档
PUT http://192.144.228.170:7700/indexes/product/documents
[
{
"id": "4",
"name": "Rust",
"desc": "就很难"
},
{
"id": "5",
"name": "Java",
"desc": "仅次于PHP的存在",
"father": "James Gosling"
},
{
"id": "6",
"productName": "二锅头",
"品牌": "红星",
"价格": "9.5",
"desc": "让天下没用难喝的酒"
}
]
- 查询索引下的所有文档
可选参数offset、limit、attributesToRetrieve=*
GET http://192.144.228.170:7700/indexes/product/documents
- 查询单个指定文档
路径参数1为文档的primaryKey
GET http://192.144.228.170:7700/indexes/product/documents/1
- 删除索引下的所有文档
DELETE http://192.144.228.170:7700/indexes/product/documents
- 删除单个指定文档
DELETE http://192.144.228.170:7700/indexes/product/documents/6
- 批量删除文档
POST http://jvm123.com:7700/indexes/product/documents/delete-batch
["1", "2", "3"]
HTTP方式搜索
GET和POST都可进行搜索,建议使用POST(官方建议)
POST http://192.144.228.170:7700/indexes/product/search
{
"q": "go",
"limit": 5,
"offset": 0
}
结果如下:
{
"hits": [
{
"id": "1",
"name": "GoLang",
"desc": "互联网时代的C语言",
"father": "Ken Thompson",
"company": "Google"
},
{
"id": "5",
"name": "Jave",
"desc": "没有对手的东西",
"father": "James Gosling"
},
{
"id": "4",
"name": "Rust",
"desc": "就很难",
"father": "Ken Thompson",
"company": "Google"
}
],
"offset": 0,
"limit": 5,
"nbHits": 3,
"exhaustiveNbHits": false,
"processingTimeMs": 0,
"query": "go"
}
HTTP方式查看异步更新状态
所有create/update/delete请求,都会将其操作放入一个队列中,并返回一个updateId,通过updateId,可以查询本次操作的结果状态信息
- 查询所有异步更新状态的信息
GET http://192.144.228.170:7700/indexes/product/updates
[
{
"status": "processed",
"updateId": 0,
"type": {
"name": "DocumentsAddition",
"number": 3
},
"duration": 0.355614339,
"enqueuedAt": "2021-05-11T07:53:05.042469777Z",
"processedAt": "2021-05-11T07:53:05.406005185Z"
},
{
"status": "processed",
"updateId": 1,
"type": {
"name": "DocumentsAddition",
"number": 3
},
"duration": 0.004087888,
"enqueuedAt": "2021-05-11T07:56:10.200752903Z",
"processedAt": "2021-05-11T07:56:10.210661520Z"
},
{
"status": "processed",
"updateId": 2,
"type": {
"name": "DocumentsPartial",
"number": 3
},
"duration": 0.006438527,
"enqueuedAt": "2021-05-11T07:59:10.648921904Z",
"processedAt": "2021-05-11T07:59:10.661462108Z"
}
]
- 查询指定updateId的异步更新状态信息
GET http://192.144.228.170:7700/indexes/product/updates/1
{
"status": "processed",
"updateId": 1,
"type": {
"name": "DocumentsAddition",
"number": 3
},
"duration": 0.004087888,
"enqueuedAt": "2021-05-11T07:56:10.200752903Z",
"processedAt": "2021-05-11T07:56:10.210661520Z"
}
HTTP方式查看其他信息(详情参考官方文档)
- 查询索引的settings信息
GET http://192.144.228.170:7700/indexes/product/settings
- 查询索引的指标信息
GET http://192.144.228.170:7700/indexes/product/stats
- 查询MeiliSearch的keys
GET http://192.144.228.170:7700/keys
- 查询MeiliSearch指标信息
GET http://192.144.228.170:7700/stats
- 查询MeiliSearch健康状况
GET http://192.144.228.170:7700/health
- 查询MeiliSearch版本信息
GET http://192.144.228.170:7700/version
- dump备份
POST http://192.144.228.170:7700/dumps
结果如下:
{
"uid": "20210511-085916182",
"status": "in_progress"
}
说明:.dump备份文件 在MEILI_DUMPS_DIR所指定的位置,uid为本次备份的唯一标识,可以通过UID,查看完成状态
- 查看dump备份完成状态
GET http://192.144.228.170:7700/dumps/20210511-085916182/status
{
"uid": "20210511-085916182",
"status": "done"
}
说明:done表示已完成
各种语言开发客户端API参考
Java开发者入口
JavaScript开发者入口
Go开发者入口
PHP开发者入口
Python开发者入口
Rust开发者入口
DoNet开发者入口