Prerequisites
This guide walks you through setting up Meilisearch with .NET (C#).
Prerequisites
- .NET 6.0 or higher
- A Meilisearch instance (Cloud or self-hosted)
1. Install the SDK
- .NET CLI
- Package Manager
dotnet add package MeiliSearch
Install-Package MeiliSearch
2. Connect to Meilisearch
using Meilisearch;
var client = new MeilisearchClient(
Environment.GetEnvironmentVariable("MEILISEARCH_URL"),
Environment.GetEnvironmentVariable("MEILISEARCH_KEY")
);
Set your environment variables:
export MEILISEARCH_URL="https://your-instance.meilisearch.io" # or http://localhost:7700
export MEILISEARCH_KEY="your_api_key"
3. Add documents
// Define your document class
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
public string[] Genres { get; set; }
public int Year { get; set; }
}
// Add documents
var movies = new Movie[]
{
new Movie { Id = 1, Title = "The Matrix", Genres = new[] { "Action", "Sci-Fi" }, Year = 1999 },
new Movie { Id = 2, Title = "Inception", Genres = new[] { "Action", "Thriller" }, Year = 2010 },
new Movie { Id = 3, Title = "Interstellar", Genres = new[] { "Drama", "Sci-Fi" }, Year = 2014 }
};
var index = client.Index("movies");
var task = await index.AddDocumentsAsync(movies);
// Wait for indexing to complete
await client.WaitForTaskAsync(task.TaskUid);
4. Search
var results = await index.SearchAsync<Movie>("matrix");
foreach (var hit in results.Hits)
{
Console.WriteLine($"{hit.Title} ({hit.Year})");
}
// The Matrix (1999)
5. Search with filters
First, configure filterable attributes:
await index.UpdateFilterableAttributesAsync(new[] { "genres", "year" });
Then search with filters:
var results = await index.SearchAsync<Movie>("", new SearchQuery
{
Filter = "genres = \"Sci-Fi\" AND year > 2000"
});
Full example
using Meilisearch;
var client = new MeilisearchClient(
Environment.GetEnvironmentVariable("MEILISEARCH_URL"),
Environment.GetEnvironmentVariable("MEILISEARCH_KEY")
);
// Add documents
var movies = new[]
{
new { Id = 1, Title = "The Matrix", Year = 1999 },
new { Id = 2, Title = "Inception", Year = 2010 },
new { Id = 3, Title = "Interstellar", Year = 2014 }
};
var index = client.Index("movies");
var task = await index.AddDocumentsAsync(movies);
await client.WaitForTaskAsync(task.TaskUid);
// Search
var results = await index.SearchAsync<dynamic>("inter");
foreach (var hit in results.Hits)
{
Console.WriteLine(hit);
}
Next steps
Full-text search
Configure ranking and relevancy
Filtering
Add filters and facets
AI-powered search
Add semantic search
API reference
Explore all search parameters
