Skip to content

Add a search function to your application_

Learn how to add a search function to your application.

5 min readUpdated Jun 29, 2026

Function templates are pre-built Appwrite Functions that can be integrated into your Appwrite project with just a few clicks. Using them, you can easily incorporate new features and integrations into your app without writing additional code or managing infrastructure.

One such integration you can implement using Appwrite Functions is Searching using Meilisearch. In this blog we show how you can use an Appwrite Function Template to integrate search with Meilisearch.

Setting up the Template

Meilisearch is a flexible and powerful user-focused search engine that can be added to any website or application. The purpose of this function template is to sync rows in an Appwrite database table to a Meilisearch index. Using this function template, users can explore, search, and retrieve information from the connected database table. Through this template, rows from the Appwrite table are systematically indexed within Meilisearch.

To use the function, you need the following set of keys:

  • APPWRITE_KEY - API Key to talk to Appwrite backend APIs.To generate API Keys you can follow the documentation here
  • APPWRITE_ENDPOINT - To get the Appwrite endpoint, you need to go to Appwrite and find it under “Settings”
  • APPWRITE_DATABASE_ID - The ID of the Appwrite database that contains the table to sync. You can find the documentation here.
  • APPWRITE_TABLE_ID - The ID of the table in the Appwrite database to sync.

To use Meilisearch, you can either self-host it using the command 👇

Bash
curl -L [https://install.meilisearch.com](https://install.meilisearch.com/) | sh

Or use Meilisearch Cloud. For this example, we will assume that you are using Meilisearch Cloud.

Here’s the keys you need:

  • MEILISEARCH_ENDPOINT - This is the host URL of the Meilisearch server. Once you have logged in to Meilisearch Cloud and created a new project, you will find the URL under “Overview” and this is how it should look like 👇

Overview Meilisearch
Overview Meilisearch

  • MEILISEARCH_ADMIN_API_KEY - This is the admin API key for Meilisearch. You will find it in the Meilisearch Console under “API Key”.
  • MEILISEARCH_SEARCH_API_KEY - This is the API Key for Meilisearch search operations. To get this, you need you create a new index from the Meilisearch Console. Once created you will find it under Overview as Default Search API Key

Creating an index from the Console
Creating an index from the Console

Keys
Keys

  • MEILISEARCH_INDEX_NAME - Name of the Meilisearch index to which the rows will be synchronized. For e.g, in the above picture, the Index name is Newindex. You can also find it under Settings as Index Name.

Preparing the Function

The function template syncs rows in an Appwrite database table to a Meilisearch index. It should get you up and running, but you will need to add real data to build a useful search index.

If you want to see the source code, you can find it on our templates GitHub repository. Now, let’s navigate to our functions page on Appwrite. From there, we will select the Templates tab, search for and select the Sync with Meilisearch function template.

templates
templates

The function requires APPWRITE_API_KEY, APPWRITE_DATABASE_ID, APPWRITE_TABLE_ID, MEILISEARCH_ENDPOINT, MEILISEARCH_ADMIN_API_KEY, MEILISEARCH_SEARCH_API_KEY, MEILISEARCH_INDEX_NAME. Once you have added them you can proceed to the Connect step.

Select Create a new repository (this will generate a GitHub repository for you with the function), and leave the production branch and root settings as default to create this function.

connect
connect

Testing the Template

Visit the Domains tab on the function page and copy the domain URL to test the function.

Image description
Image description

Conclusion

We’ve added search functionality to our app and opened up many possibilities to improve the experience of our app’s users.

How can the template be extended ?

  • Using tablesdb.<DATABASE_ID>.tables.<TABLE_ID>.rows.*.create, tablesdb.<DATABASE_ID>.tables.<TABLE_ID>.rows.*.update, and tablesdb.<DATABASE_ID>.tables.<TABLE_ID>.rows.*.delete events to automatically index new rows
  • Using weights and other meilisearch features to optimise search such as excluding certain fields from indexing

Some examples are:

  1. Real-time Data Exploration: It can be used to provide real-time search capabilities for datasets and data streams, allowing users to explore and analyze data in real-time.
  2. Content Management Systems: The function template can be integrated into content management systems (CMS) to facilitate efficient content retrieval for editors and site visitors.

Be sure to check out the other available Function Templates. We’ve created multiple that could be of use in your projects. You can find the templates GitHub repository here.

For more information about Appwrite and Appwrite Functions:

  1. Appwrite Function Docs: Learn more about how to use Appwrite Functions.
  2. Functions Announcement: Read the full announcement on Functions 1.4.
  3. Appwrite Discord: Connect with other developers and the Appwrite team for discussion, questions, and collaboration.

Read next

Introducing Appwrite Explorer

Eldad Fux

Appwrite Explorer brings the Appwrite REST API into the Console. Browse every endpoint, build requests with guided forms, send live calls against your project, and inspect responses without leaving the browser.

8 min read

Introducing Appwrite Terminal

Eldad Fux

Appwrite Terminal runs the Appwrite CLI directly inside the Console. Your session and project context are preconfigured, with keyboard-first controls and multi-tab workflows, so you can inspect resources without leaving the project.

7 min read

Ready to build?_