Skip to content
目录

MeiliSearch

一、快速入门

1. 安装

1.1. cURL

shell
# Install Meilisearch
curl -L https://install.meilisearch.com | sh

# Launch Meilisearch
./meilisearch

1.2. brew

shell
# Update brew and install Meilisearch
brew update && brew install meilisearch

# Launch Meilisearch
meilisearch

1.3. docker

shell
# Fetch the latest version of Meilisearch image from DockerHub
docker pull getmeili/meilisearch:v0.30

# Launch Meilisearch in development mode with a master key
docker run -it --rm \
    -p 7700:7700 \
    -e MEILI_MASTER_KEY='MASTER_KEY'\
    -v $(pwd)/meili_data:/meili_data \
    getmeili/meilisearch:v0.30 \
    meilisearch --env="development"

2. 批量导入文档

2.1. cURL

shell
curl \
  -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \
  -H 'Content-Type: application/json' \
  --data-binary @movies.json

2.2. PHP

添加依赖:

shell
composer require meilisearch/meilisearch-php \
    guzzlehttp/guzzle \
    http-interop/http-factory-guzzle:^1.0

导入文档:

php
<?php

require_once __DIR__ . '/vendor/autoload.php';

use Meilisearch\Client;

$client = new Client('http://localhost:7700');

$movies_json = file_get_contents('movies.json');
$movies = json_decode($movies_json);

$client->index('movies')->addDocuments($movies);

2.3. Go

添加依赖:

shell
go get -u github.com/meilisearch/meilisearch-go

导入文档:

go
package main

import (
  "os"
  "encoding/json"
  "io"

  "github.com/meilisearch/meilisearch-go"
)

func main() {
  client := meilisearch.NewClient(meilisearch.ClientConfig{
    Host: "http://localhost:7700",
  })

  jsonFile, _ := os.Open("movies.json")
  defer jsonFile.Close()

  byteValue, _ := io.ReadAll(jsonFile)
  var movies []map[string]interface{}
  json.Unmarshal(byteValue, &movies)

  _, err := client.Index("movies").AddDocuments(movies)
  if err != nil {
      panic(err)
  }
}

默认情况下,Meilisearch 将连续的文件请求合并为一个批次,并一起处理它们。这个过程被称为自动批处理,它大大加快了索引的速度。在添加文档后,你应该收到这样的响应:

json
{
    "taskUid": 0,
    "indexUid": "movies",
    "status": "enqueued",
    "type": "documentAdditionOrUpdate",
    "enqueuedAt": "2021-08-11T09:25:53.000000Z"
}

Meilisearch 的大多数数据库操作是异步的。这意味着 API 请求不是被即时处理,而是被添加到一个队列中,一次一个地处理。

使用返回的 taskUid 来检查你的文件的状态:

cURL

shell
curl \
  -X GET 'http://localhost:7700/tasks/0'

PHP

php
$client->getTask(0);

Go

go
client.GetTask(0)

3.