Categorygithub.com/senyast4745/meilisearch-go
modulepackage
1.12.5
Repository: https://github.com/senyast4745/meilisearch-go.git
Documentation: pkg.go.dev

# README

MeiliSearch-Go

MeiliSearch Go

MeiliSearch | Documentation | Website | Blog | Twitter | FAQ

GitHub Workflow Status Test License Slack

⚔ The MeiliSearch API client written for Golang

MeiliSearch Go is the MeiliSearch API client for Go developers. MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine. Both searching and indexing are highly customizable. Features such as typo-tolerance, filters, facets and synonyms are provided out-of-the-box.

Table of Contents

šŸ“– Documentation

See our Documentation or our API References.

šŸ”§ Installation

With go get in command line:

$ go get github.com/meilisearch/meilisearch-go

Run MeiliSearch

There are many easy ways to download and run a MeiliSearch instance.

For example, if you use Docker:

$ docker pull getmeili/meilisearch:latest # Fetch the latest version of MeiliSearch image from Docker Hub
$ docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey

NB: you can also download MeiliSearch from Homebrew or APT.

šŸš€ Getting Started

Add documents

package main

import (
    "fmt"
    "os"

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

func main() {
    var client = meilisearch.NewClient(meilisearch.Config{
        Host: "http://127.0.0.1:7700",
        APIKey: "masterKey",
    })

    // Create an index if your index does not already exist
    _, err := client.Indexes().Create(meilisearch.CreateIndexRequest{
        UID: "books",
    })
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    documents := []map[string]interface{}{
        {"book_id": 123,  "title": "Pride and Prejudice"},
        {"book_id": 456,  "title": "Le Petit Prince"},
        {"book_id": 1,    "title": "Alice In Wonderland"},
        {"book_id": 1344, "title": "The Hobbit"},
        {"book_id": 4,    "title": "Harry Potter and the Half-Blood Prince"},
        {"book_id": 42,   "title": "The Hitchhiker's Guide to the Galaxy"},
    }

    updateRes, err := client.Documents("books").AddOrUpdate(documents) // => { "updateId": 0 }
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println(updateRes.UpdateID)
}

With the updateId, you can check the status (enqueued, processed or failed) of your documents addition using the update endpoint.

Basic Search

package main

import (
    "fmt"
    "os"

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

func main() {
    // MeiliSearch is typo-tolerant:
    searchRes, err := client.Search("books").Search(meilisearch.SearchRequest{
        Query: "harry pottre",
        Limit: 10,
    })
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println(searchRes.Hits)
}

JSON output:

{
  "hits": [{
    "book_id": 4,
    "title": "Harry Potter and the Half-Blood Prince"
  }],
  "offset": 0,
  "limit": 10,
  "processingTimeMs": 1,
  "query": "harry pottre"
}

Custom Search

All the supported options are described in the search parameters section of the documentation.

func main() {
    resp, err := client.Search(indexUID).Search(meilisearch.SearchRequest{
        Query: "prince",
        AttributesToHighlight: []string{"*"},
        Filters: "book_id > 10"
    })
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println(searchRes.Hits)
}

JSON output:

{
    "hits": [
        {
            "book_id": 456,
            "title": "Le Petit Prince",
            "_formatted": {
                "book_id": 456,
                "title": "Le Petit <em>Prince</em>"
            }
        }
    ],
    "offset": 0,
    "limit": 1,
    "processingTimeMs": 0,
    "query": "prince"
}

šŸ¤– Compatibility with MeiliSearch

This package only guarantees the compatibility with the version v0.15.0 of MeiliSearch.

šŸ’” Learn More

The following sections may interest you:

āš™ļø Development Workflow and Contributing

Any new contribution is more than welcome in this project!

If you want to know more about the development workflow or want to contribute, please visit our contributing guidelines for detailed instructions!


MeiliSearch provides and maintains many SDKs and Integration tools like this one. We want to provide everyone with an amazing search experience for any kind of project. If you want to contribute, make suggestions, or just know what's going on right now, visit us in the integration-guides repository.

# Functions

No description provided by the author

# Constants

ErrCodeMarshalRequest impossible to serialize request body.
ErrCodeRequestCreation impossible create a request.
ErrCodeRequestExecution impossible execute a request.
ErrCodeResponseReadBody impossible to read the response body.
ErrCodeResponseStatusCode the response status code is not conform.
ErrCodeResponseUnmarshalBody impossible deserialize the response body.
ErrCodeUnknown default error code, undefined.
ErrCodeURLParsing impossible to parse url parameters.
UpdateStatusEnqueued means the server know the update but didn't handle it yet.
UpdateStatusFailed means the server has processed the update and an error has been reported.
UpdateStatusProcessed means the server has processed the update and all went well.
UpdateStatusUnknown is the default UpdateStatus, should not exist.

# Structs

AsyncUpdateID is returned for asynchronous method Documentation: https://docs.meilisearch.com/guides/advanced_guides/asynchronous_updates.html.
Config configure the Client.
CreateIndexRequest is the request body for create index method.
CreateIndexResponse is the response body for create index method.
Error is the internal error structure that all exposed method use.
Client is a structure that give you the power for interacting with an high-level api with meilisearch.
No description provided by the author
Index is the type that represent an index in MeiliSearch.
Keys allow the user to connect to the MeiliSearch instance Documentation: https://docs.meilisearch.com/guides/advanced_guides/asynchronous_updates.html.
ListDocumentsRequest is the request body for list documents method.
No description provided by the author
No description provided by the author
No description provided by the author
SearchRequest is the request url param needed for a search query.
SearchResponse is the response body for search method.
Settings is the type that represents the settings in MeiliSearch.
Stats is the type that represent all stats.
StatsIndex is the type that represent the stats of an index in MeiliSearch.
Update indicate information about an update.
Version is the type that represents the versions in MeiliSearch.

# Interfaces

APIDocuments are objects composed of fields containing any data.
APIHealth handle health of a MeiliSearch server.
APIIndexes index is an entity, like a table in SQL, with a specific schema definition.
APIKeys To communicate with MeiliSearch's RESTfull API most of the routes require an API key.
APISearch search through documents list in an index.
APISettings allow to configure the MeiliSearch indexing & search behaviour.
APIStats retrieve statistic over all indexes or a specific index id.
APIUpdates MeiliSearch is an asynchronous API.
APIVersion retrieve the version of MeiliSearch.
APIWithIndexID is used to await an async update id response.
No description provided by the author
No description provided by the author

# Type aliases

ErrCode are all possible errors found during requests.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Unknown is unknown json type.
No description provided by the author
UpdateStatus is the status of an update.