Skip to content

v1.1.0-rc.0 🐡

Pre-release
Pre-release
Compare
Choose a tag to compare
@curquiza curquiza released this 06 Mar 14:40
· 36 commits to release-v1.1.0 since this release
c0ede6d

⚠️ Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

Meilisearch v1.1.0 introduces the much-requested multi-index search! You can now use one single HTTP request to perform different searches in multiple indexes.

Additional new features include: geoBoundingBox geosearch filter, addition of a facetStats objects to queries using the facets search parameters, and customization of CSV separators.

📖 Meilisearch's official documentation will be ready for the official v1.1.0 release. Meanwhile, work-in-progress documentation is available here.

New features and improvements 🔥

Multi-index search: allow multiple searches in a single request

Perform searches in multiple indexes in a single HTTP request using the new /multi-search endpoint:

curl \
  -X POST 'http://localhost:7700/multi-search' \
  -H 'Content-Type: application/json'
  --data-binary '{
    "queries": [
       {
         "indexUid": "products",
         "q": "Nike",
         "limit": 1
       },
      {
         "indexUid": "brands",
         "q": "Nike",
         "limit": 1
      }
    ]
  }'

When you use the multi-index search endpoint, Meilisearch returns an array of results for each queried index:

{
	"results": [
	  {
	    "indexUid": "products",
	    "hits": [],
	    "query": "Nike",
	    "processingTimeMs": 1,
	    "limit": 1,
	    "offset": 0,
	    "estimatedTotalHits": 17
	  },
	  {
	    "indexUid": "brands",
	    "hits": [],
	    "query": "Nike",
	    "processingTimeMs": 0,
	    "limit": 1,
	    "offset": 0,
	    "estimatedTotalHits": 7
	  }
	]
}

Done by @dureuill in #3417

Introduce facetStats

Queries containing the facets parameter now include a facetStats object by default:

curl \
  -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "facets": ["price"]
  }'

facetStats only lists facets containing numerical values. Facets with other types of values are not included in the facetStats object. This object contains the minimum (min) and the maximum (max) of each numerical facet:

{
  "hits": [],
  "facetDistribution": {
    "price": {}
  },
  "facetStats": {
    "price": {
      "min": 2,
      "max": 60
    }
  }
}

Done by @dureuill in #3423.

New geosearch filter: _geoBoundingBox

Use the filter search parameter and the _geoBoundingBox filter expression to obtain results contained within a specific geographic area.

curl \
  -X POST 'http://localhost:7700/indexes/restaurants/search' \
  -H 'Content-type:application/json' \
  --data-binary '{ "filter": "_geoBoundingBox([45.472735, 9.184019],[45.473711, 9.185613] )" }'

_geoBoundingBox([lat, lng], [lat, lng]) accepts two parameters: one array specifying the top left corner, and a second array specifying the bottom right corner.

Done by @gmourier and @irevoire in #3405 and #3529.

Removing limits on index size and count

Meilisearch no longer limits the size nor the amount of indexes a single instance may contain. You can now create an unlimited number of indexes, whose maximum size will be only dictated by the memory address space devoted to a single process by the OS. Under Linux, the limit is at about 80TiB.

Done by @dureuill in #3319, #3331 and #3544.

Experimental feature: monitor Meilisearch usage with Prometheus

This release introduces an experimental feature allowing you to monitor metrics with Prometheus.

When launching Meilisearch, use the following flag:

meilisearch --experimental-enable-metrics

The /metrics route will be available and compatible with Prometheus.

🗣️ Since this feature is experimental, we need your help to iterate on it! You are more than welcome to share your thoughts and your feedback on this discussion.

⚠️ The experimental feature API can break between Meilisearch versions. Be careful if using it in production.

Done by @irevoire, @dureuill, and @james-2001 in #3496, #3524, #3538 and #3543.

Improve language support

  • Enhance Greek support by normalizing diacritics and final sigma
  • Enhance Arabic support by ignoring Tatweel
  • Enhance language detection: detection now happens during indexing, reducing erroneous language recognition during search

Done in #3347 and on Charabia by @choznerol, @cymruu, @james-2001 and @ManyTheFish.

Other improvements

  • Allow wildcards (*) at the end of index names when creating API keys or tenant tokens (#3174) @Kerollmops & @akhildevelops
  • Customize the CSV delimiter (default: ,) with the csvDelimiter parameter in the document addition and update endpoint (#3505, #3534) @MixusMinimax and @irevoire
  • Improve error messages: introduction of "did you mean ...?" suggestions when doing typos on a Meilisearch parameter (#3492) @irevoire
  • Automatically batch addition and deletion tasks together to speed up indexing (#3470) @irevoire
  • Accept null as a valid _geo field when importing or updating documents (#3515) @irevoire
  • Reduce crate size (from ~200MB to ~50MB) by compressing dictionaries (#3347) @ManyTheFish

Fixes 🐞

Misc

The following changes do not impact user experience.

❤️ Thanks again to our external contributors: