让我们看一下 Meilisearch 最新更新中的一些最重大变化。我们将在本文中介绍主要变化,但您也可以查看 完整变更日志 在 GitHub 上。
新功能:多搜索 API 端点
通过引入 /multi-search
API 端点,Meilisearch 允许您使用单个 HTTP 请求发送多个搜索查询。这将使您能够完成许多不同的事情,例如联合搜索和多选分面!
联合搜索
假设您有两个不同的数据集:“品牌”和“产品”。如果您可以在保持它们在各自索引中分离的同时同时搜索两者,那不是很方便吗?您可以通过查询多个索引来执行联合搜索,也称为多索引搜索。
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
}
]
}'
响应是一个包含每个查询索引的一个对象的 results
数组。
{
"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
}
]
}
多选分面
当需要在分面搜索界面中实现多选分面行为时,多搜索请求 API 特别有用。
多选分面,也称为析取分面,允许用户同时查看满足多个条件的项目。这种类型的界面还显示了每个选项可用的项目数量,即使这些项目尚未被选中。这允许快速有效地探索满足用户特定条件的项目,最终节省时间和精力。
由于多选分面根据包容性 OR
逻辑运行,因此计算它们需要向 Meilisearch 发送多个查询。单独发送这些查询会导致性能下降,并可能导致更高的托管服务成本。
使用 /multi-search
端点,您可以在单个请求中向同一索引发送多个查询,从而优化性能并降低托管成本。
/multi-search
端点,因此这种变通方法不再必要。查看我们的文档以了解有关 多搜索请求 和 分面搜索 的更多信息。
新功能:_geoBoundingBox
边界框是一个完全包围某个区域的矩形框。使用新的 _geoBoundingBox
过滤器表达式,您可以搜索包含在矩形地理区域内的结果。
它接受两个参数,对应于所需区域的右上角(东北)和左下角(西南)的坐标:_geoBoundingBox([lat, lng], [lat, lng])
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] )" }'
查看我们的 指南,了解如何根据地理坐标过滤结果。
新功能:引入 facetStats
在搜索查询中使用 facets
参数时,搜索结果对象现在将包含一个 facetStats
对象,该对象提供每个数字分面的最小值和最大值。任何没有数字值的都会被省略。
给定一个产品索引,假设您想知道最高和最低价格以实现范围滑块组件。
curl \
-X POST 'http://localhost:7700/indexes/products/search' \
-H 'Content-Type: application/json' \
--data-binary '{
"facets": ["price"]
}'
您将获得以下响应,其中包含所有可用的必要信息。
{
"hits": […],
"facetDistribution": {
"price": {…}
},
"facetStats": {
"price": {
"min": 1.99,
"max": 1898.28
}
}
}
实验性功能:使用 Prometheus 进行系统监控
此版本引入了一个新的 /metrics
端点,该端点提供与 Prometheus 兼容的数据,Prometheus 是一个开源系统监控和警报工具包。这个实验性端点提供了有关 Meilisearch 的行为和性能的宝贵见解。
要启用它,请在启动 Meilisearch 时使用 --experimental-enable-metrics
标志。
您是否计划使用此功能?请在 GitHub 讨论 中告诉我们您的体验。
改进:删除索引大小和数量限制
Meilisearch 已取消对每个实例的索引数量和大小的限制,因此您可以根据需要创建任意数量的索引 🥳
现在唯一的限制是您的操作系统分配给单个进程的内存地址空间。在 文档 中了解更多信息。
其他改进
- 现在,您可以在管理 API 密钥和租户令牌时在索引名称末尾使用通配符(
*
)。例如,"medical*"
将匹配medical_records
和medical_equipement
索引。 - 您可以使用 添加或更新文档 或 添加或替换文档 端点的
csvDelimiter
参数覆盖默认的 CSV 分隔符 - 单个逗号 (,
)。 - 交错的文档添加和删除任务现在会自动批处理在一起,从而加快索引过程。
- 我们出色的社区帮助我们增强了对希腊语和阿拉伯语的支持。
- 语言检测现在在索引时发生,减少了搜索期间的错误语言识别,从而提高了相关性。
我们非常感谢所有参与此版本的社区成员。我们要感谢: @akhildevelops、 @AymanHamdoun、 @cymruu、@FrancisMurillo @GregoryConrad、 @gregsadetsky、 @james-2001、 @MixusMinimax、 @waveywaves 和 @ztkmkoo 对 Meilisearch 的帮助。
我们还要特别感谢 @choznerol、 @cymruu 和 @james-2001 对 Charabia 的贡献。
这就是 v1.1 的全部内容!请务必查看 变更日志 以获取完整的发布说明。如果您有任何问题或想保持更新,您可以在 Discord 上加入我们或订阅我们的 新闻稿。您还可以查看我们的 路线图 并参与我们的 产品讨论 来帮助我们改进。