/indexes 路由允许您创建、管理和删除索引。

了解更多关于索引的信息

索引对象

{
  "uid": "movies",
  "createdAt": "2022-02-10T07:45:15.628261Z",
  "updatedAt": "2022-02-21T15:28:43.496574Z",
  "primaryKey": "id"
}
名称类型默认值描述
uid字符串索引的唯一标识符。一旦创建后不可更改
createdAt字符串索引创建日期,使用RFC 3339格式表示。在索引创建时自动生成
updatedAt字符串索引最近更新日期,使用RFC 3339格式表示。在索引创建或更新时自动生成
primaryKey字符串 / nullnull索引的主键。如果未指定,Meilisearch 会从添加的第一个文档中推测您的主键

列出所有索引

GET
/indexes

列出所有索引。可以通过 offsetlimit 查询参数实现分页效果。

查询参数

查询参数描述默认值
offset跳过的索引数量0
limit返回的索引数量20

响应

名称类型描述
results数组包含索引对象的数组
offset整数跳过的索引数量
limit整数返回的索引数量
total整数索引总数

示例

curl \
  -X GET 'MEILISEARCH_URL/indexes?limit=3'

响应: 200 Ok

{
  "results": [
    {
      "uid": "books",
      "createdAt": "2022-03-08T10:00:27.377346Z",
      "updatedAt": "2022-03-08T10:00:27.391209Z",
      "primaryKey": "id"
    },
    {
      "uid": "meteorites",
      "createdAt": "2022-03-08T10:00:44.518768Z",
      "updatedAt": "2022-03-08T10:00:44.582083Z",
      "primaryKey": "id"
    },
    {
      "uid": "movies",
      "createdAt": "2022-02-10T07:45:15.628261Z",
      "updatedAt": "2022-02-21T15:28:43.496574Z",
      "primaryKey": "id"
    }
  ],
  "offset": 0,
  "limit": 3,
  "total": 5
}

获取单个索引

GET
/indexes/{index_uid}

获取某个索引的信息。

路径参数

名称类型描述
index_uid *字符串请求索引的uid标识符

示例

curl \
  -X GET 'MEILISEARCH_URL/indexes/movies'

响应: 200 Ok

{
  "uid": "movies",
  "createdAt": "2022-02-10T07:45:15.628261Z",
  "updatedAt": "2022-02-21T15:28:43.496574Z",
  "primaryKey": "id"
}

创建索引

POST
/indexes

创建一个索引。

请求体

名称类型默认值描述
uid *字符串必填请求索引的 uid
primaryKey字符串 / nullnull请求索引的 主键
{
  "uid": "movies",
  "primaryKey": "id"
}

示例

curl \
  -X POST 'MEILISEARCH_URL/indexes' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "uid": "movies",
    "primaryKey": "id"
  }'

响应: 202 Accepted

{
  "taskUid": 0,
  "indexUid": "movies",
  "status": "enqueued",
  "type": "indexCreation",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

您可以使用响应中的 taskUid跟踪请求状态

更新索引

PATCH
/indexes/{index_uid}

更新索引的主键。只要索引不包含文档,您可以自由更新主键。

若要更改已包含文档索引的主键,必须先删除该索引中的所有文档。然后才能更改主键并重新索引数据集。

无法更改索引的 uid

路径参数

名称类型描述
index_uid *字符串请求索引的 uid

请求体

名称类型默认值描述
primaryKey *字符串 / null请求索引的 主键

示例

curl \
  -X PATCH 'MEILISEARCH_URL/indexes/movies' \
  -H 'Content-Type: application/json' \
  --data-binary '{ "primaryKey": "id" }'

响应: 202 Accepted

{
  "taskUid": 1,
  "indexUid": "movies",
  "status": "enqueued",
  "type": "indexUpdate",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

您可以使用响应中的 taskUid跟踪请求状态

删除索引

DELETE
/indexes/{index_uid}

删除一个索引。

路径参数

名称类型描述
index_uid *字符串请求索引的 uid

示例

curl \
  -X DELETE 'MEILISEARCH_URL/indexes/movies'

响应: 202 Accepted

{
  "taskUid": 1,
  "indexUid": "movies",
  "status": "enqueued",
  "type": "indexDeletion",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

您可以使用响应中的 taskUid跟踪请求状态

交换索引

POST /swap-indexes
POST
/swap-indexes

交换两个或多个索引的文档、设置和任务历史记录。只能成对交换索引,但单个请求中可以交换任意数量的索引对。

索引交换是原子事务:要么所有索引都成功交换,要么都不交换

交换 indexAindexB 还会在任务历史记录中将所有 indexA 的引用替换为 indexB,反之亦然。enqueued 状态的任务不会被修改。

要了解更多关于索引交换的信息,请参阅此简短指南。

请求体

一个对象数组,每个对象只有一个键:indexes

名称类型默认值描述
indexes*字符串数组需要交换的两个 indexUid 的数组

每个 indexes 数组必须只包含两个元素:要交换的两个索引的 indexUid。发送空数组([])是有效的,但不会执行任何交换操作。

可以通过单个请求交换多对索引。为此,需要为每对要交换的索引提供一个对象。

示例

curl \
  -X POST 'MEILISEARCH_URL/swap-indexes' \
  -H 'Content-Type: application/json' \
  --data-binary '[
    {
      "indexes": [
        "indexA",
        "indexB"
      ]
    },
    {
      "indexes": [
        "indexX",
        "indexY"
      ]
    }
  ]'

响应

{
  "taskUid": 3,
  "indexUid": null,
  "status": "enqueued",
  "type": "indexSwap",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

由于 indexSwap 是一个全局任务indexUid 始终为 null

可以使用响应的 taskUid跟踪请求状态