Meilisearch 从用户处收集匿名数据以改进我们的产品。这可以随时停用,并且任何已收集的数据都可以根据请求删除

我们使用哪些工具来收集和可视化数据?

我们使用 Segment,一个数据收集和管理平台,来收集使用数据。然后,我们将这些数据馈送到 Amplitude,一个用于绘制图表和突出显示数据的工具,以便我们可以根据需要构建可视化效果。

我们收集哪些类型的数据?

我们的数据收集侧重于以下类别

  • 系统指标,例如运行 Meilisearch 的设备的技术规格、软件版本和操作系统
  • 性能指标,例如搜索请求的成功率和平均延迟
  • 使用指标,旨在评估我们的最新功能。这些指标随每个新版本而变化

请参阅下方我们当前收集的完整指标列表

我们绝不会

  • 识别或跟踪用户
  • 收集个人信息,例如 IP 地址、电子邮件地址或网站 URL
  • 存储添加到 Meilisearch 实例的文档数据

为什么要收集遥测数据?

我们收集遥测数据仅有两个原因:改进我们的产品,以及使我们能够全职持续从事此项目。

为了创建更好的产品,我们需要可靠的定量信息。我们收集的数据有助于我们修复错误、评估功能的成功率,并更好地了解用户的需求。

我们还需要证明人们确实在使用 Meilisearch。使用指标有助于我们向投资者证明我们的存在,从而使我们能够维持这个项目的生命力。

您为什么要信任我们?

不要信任我们——请追究我们的责任。我们认为,在涉及您的私人数据时,对科技公司不信任是可理解的,甚至是明智的。这就是为什么我们尝试保持数据收集的完全透明,提供选择退出选项,并允许用户随时请求删除其所有已收集的数据。在缺乏全球数据保护法律的情况下,我们认为这是唯一符合道德的数据收集方式。

没有公司是完美的。如果您认为我们不够透明,或者收集的数据侵犯了您的个人隐私,请通过我们的专用邮箱告知我们:[email protected]。同样,如果您发现任何您认为与我们相关的数据权利倡议或数据保护工具,请分享。我们对此主题充满热情并非常重视。

如何禁用数据收集

通过设置命令行选项或环境变量,然后重新启动 Meilisearch 实例,可以随时禁用数据收集。

有关配置 Meilisearch 的更多信息,请阅读我们的配置参考

如何删除所有收集的数据

我们 Meilisearch 团队提供一个电子邮件地址,以便用户可以请求从我们所有工具中完全删除他们的数据。

为此,请发送电子邮件至 [email protected],其中包含为您的 Meilisearch 安装生成的唯一标识符(启动 Meilisearch 时的 Instance UID)。任何关于我们收集数据管理的问题也可以发送到此电子邮件地址。

所有收集数据的详尽列表

每当触发收集某些数据片的事件时,Meilisearch 不会立即发送。相反,它将其与其他数据打包成一个批次,最大可达 500kb。批次每小时发送一次,或在达到 500kb 后发送,以先发生者为准。这样做是为了提高性能和减少网络流量。

此列表可能随 Meilisearch 的每个新版本而更改。这不是因为我们试图耍花招!而是因为当我们添加新功能时,我们需要收集额外的数据点以了解其性能。

指标名称描述示例
context.app.versionMeilisearch 版本号1.3.0
infos.env`--env`/`MEILI_ENV` 的值production
infos.db_path如果指定了 `--db-path`/`MEILI_DB_PATH` 则为 `true`true
infos.import_dump如果指定了 `--import-dump` 则为 `true`true
infos.dump_dir如果指定了 `--dump-dir`/`MEILI_DUMP_DIR` 则为 `true`true
infos.ignore_missing_dump如果激活了 `--ignore-missing-dump` 则为 `true`true
infos.ignore_dump_if_db_exists如果激活了 `--ignore-dump-if-db-exists` 则为 `true`true
infos.import_snapshot如果指定了 `--import-snapshot` 则为 `true`true
infos.schedule_snapshot如果设置了 `--schedule_snapshot`/`MEILI_SCHEDULE_SNAPSHOT` 的值,否则为 `None`86400
infos.snapshot_dir如果指定了 `--snapshot-dir`/`MEILI_SNAPSHOT_DIR` 则为 `true`true
infos.ignore_missing_snapshot如果激活了 `--ignore-missing-snapshot` 则为 `true`true
infos.ignore_snapshot_if_db_exists如果激活了 `--ignore-snapshot-if-db-exists` 则为 `true`true
infos.http_addr如果指定了 `--http-addr`/`MEILI_HTTP_ADDR` 则为 `true`true
infos.http_payload_size_limit`--http-payload-size-limit`/`MEILI_HTTP_PAYLOAD_SIZE_LIMIT` 的值,以字节为单位336042103
infos.log_level`--log-level`/`MEILI_LOG_LEVEL` 的值debug
infos.max_indexing_memory`--max-indexing-memory`/`MEILI_MAX_INDEXING_MEMORY` 的值,以字节为单位336042103
infos.max_indexing_threads`--max-indexing-threads`/`MEILI_MAX_INDEXING_THREADS` 的值,以整数为单位4
infos.log_level`--log-level`/`MEILI_LOG_LEVEL` 的值debug
infos.ssl_auth_path如果指定了 `--ssl-auth-path`/`MEILI_SSL_AUTH_PATH` 则为 `true`false
infos.ssl_cert_path如果指定了 `--ssl-cert-path`/`MEILI_SSL_CERT_PATH` 则为 `true`false
infos.ssl_key_path如果指定了 `--ssl-key-path`/`MEILI_SSL_KEY_PATH` 则为 `true`false
infos.ssl_ocsp_path如果指定了 `--ssl-ocsp-path`/`MEILI_SSL_OCSP_PATH` 则为 `true`false
infos.ssl_require_auth`--ssl-require-auth`/`MEILI_SSL_REQUIRE_AUTH` 的值,布尔类型false
infos.ssl_resumption如果指定了 `--ssl-resumption`/`MEILI_SSL_RESUMPTION` 则为 `true`false
infos.ssl_tickets如果指定了 `--ssl-tickets`/`MEILI_SSL_TICKETS` 则为 `true`false
system.distributionMeilisearch 启动时的发行版Arch Linux
system.kernel_versionMeilisearch 启动时的内核版本5.14.10
system.cores核心数量24
system.ram_size总内存容量。以 `KB` 为单位表示16777216
system.disk_size最大磁盘的总容量。以 `Bytes` 为单位表示1048576000
system.server_provider`MEILI_SERVER_PROVIDER` 环境变量的值AWS
stats.database_size数据库大小。以 `Bytes` 为单位表示2621440
stats.indexes_number索引数量2
start_since_days实例启动以来的天数365
user_agentAPI 调用期间遇到的 User-agent 头部[“Meilisearch Ruby (2.1)”, “Ruby (3.0)“]
requests.99th_response_time99% 最快成功搜索请求中的最高延迟57ms
requests.total_succeeded成功请求总数3456
requests.total_failed失败请求总数24
requests.total_received收到的搜索请求总数3480
requests.total_degraded达到搜索时间截止点后取消的搜索总数100
requests.total_used_negative_operator计算使用否定词或否定短语操作符的搜索173
sort.with_geoPoint如果指定了排序规则 `_geoPoint` 则为 `true`true
sort.avg_criteria_number所有包含 `sort` 参数的搜索请求中的平均排序标准数量2
filter.with_geoBoundingBox如果指定了筛选规则 `_geoBoundingBox` 则为 `true`false
filter.with_geoRadius如果指定了筛选规则 `_geoRadius` 则为 `true`false
filter.most_used_syntax所有包含 `filter` 参数的搜索请求中最常用的筛选语法string
q.max_terms_number为 `q` 参数提供的最高词项数5
pagination.max_limit为 `limit` 参数提供的最高值60
pagination.max_offset为 `offset` 参数提供的最高值1000
formatting.max_attributes_to_retrieve要检索的最大属性数量100
formatting.max_attributes_to_highlight要高亮显示的最大属性数量100
formatting.highlight_pre_tag如果指定了 `highlightPreTag` 则为 `true`false
formatting.highlight_post_tag如果指定了 `highlightPostTag` 则为 `true`false
formatting.max_attributes_to_crop要裁剪的最大属性数量100
formatting.crop_length如果指定了 `cropLength` 则为 `true`false
formatting.crop_marker如果指定了 `cropMarker` 则为 `true`false
formatting.show_matches_position如果此批次中使用了 `showMatchesPosition` 则为 `true`false
facets.avg_facets_number平均分面数量10
primary_key主键名称(如果明确设置)。否则为 `null`id
payload_type`Content-Type` 头部中遇到的所有值,包括无效值[“application/json”, “text/plain”, “application/x-ndjson”]
index_creation如果文档添加或更新请求触发了索引创建则为 `true`true
ranking_rules.words_position如果存在 `words` 排名规则,则为其位置,否则为 `null`1
ranking_rules.typo_position如果存在 `typo` 排名规则,则为其位置,否则为 `null`2
ranking_rules.proximity_position如果存在 `proximity` 排名规则,则为其位置,否则为 `null`3
ranking_rules.attribute_position如果存在 `attribute` 排名规则,则为其位置,否则为 `null`4
ranking_rules.sort_position`sort` 排名规则的位置5
ranking_rules.exactness_position如果存在 `exactness` 排名规则,则为其位置,否则为 `null`6
ranking_rules.values表示排名规则的字符串,不包含自定义升序降序规则”words, typo, attribute, sort, exactness”
sortable_attributes.total可排序属性的数量3
sortable_attributes.has_geo如果 `_geo` 设置为可排序属性则为 `true`true
filterable_attributes.total可筛选属性的数量3
filterable_attributes.has_geo如果 `_geo` 设置为可筛选属性则为 `true`false
filterable_attributes.has_patterns如果 `filterableAttributes` 使用 `attributePatterns` 则为 `true`true
searchable_attributes.total可搜索属性的数量4
searchable_attributes.with_wildcard如果 `*` 指定为可搜索属性则为 `true`false
per_task_uid如果使用 `uids` 获取特定任务资源则为 `true`true
filtered_by_uid如果任务通过 `uids` 查询参数进行筛选则为 `true`false
filtered_by_index_uid如果任务通过 `indexUids` 查询参数进行筛选则为 `true`false
filtered_by_type如果任务通过 `types` 查询参数进行筛选则为 `true`false
filtered_by_status如果任务通过 `statuses` 查询参数进行筛选则为 `true`false
filtered_by_canceled_by如果任务通过 `canceledBy` 查询参数进行筛选则为 `true`false
filtered_by_before_enqueued_at如果任务通过 `beforeEnqueuedAt` 查询参数进行筛选则为 `true`false
filtered_by_after_enqueued_at如果任务通过 `afterEnqueuedAt` 查询参数进行筛选则为 `true`false
filtered_by_before_started_at如果任务通过 `beforeStartedAt` 查询参数进行筛选则为 `true`false
filtered_by_after_started_at如果任务通过 `afterStartedAt` 查询参数进行筛选则为 `true`false
filtered_by_before_finished_at如果任务通过 `beforeFinishedAt` 查询参数进行筛选则为 `true`false
filtered_by_after_finished_at如果任务通过 `afterFinishedAt` 查询参数进行筛选则为 `true`false
typo_tolerance.enabled如果启用了错别字容忍则为 `true`true
typo_tolerance.disable_on_attributes如果为 `disableOnAttributes` 定义了至少一个值则为 `true`false
typo_tolerance.disable_on_words如果为 `disableOnWords` 定义了至少一个值则为 `true`false
typo_tolerance.min_word_size_for_typos.one_typo`minWordSizeForTypos.oneTypo` 参数的定义值5
typo_tolerance.min_word_size_for_typos.two_typos`minWordSizeForTypos.twoTypos` 参数的定义值9
pagination.max_total_hits`pagination.maxTotalHits` 属性的定义值1000
faceting.max_values_per_facet`faceting.maxValuesPerFacet` 属性的定义值100
distinct_attribute.set如果指定了字段名则为 `true`false
distinct如果请求聚合列表中指定了 `distinct` 则为 `true`true
proximity_precision.set如果此设置已手动设置则为 `true`。false
proximity_precision.value`byWord` 或 `byAttribute`。byWord
facet_search.set`facetSearch` 已被用户更改true
facet_search.value用户设置的 `facetSearch` 值true
prefix_search.set`prefixSearch` 已被用户更改true
prefix_search.value用户设置的 `prefixSearch` 值indexingTime
displayed_attributes.total显示属性的数量3
displayed_attributes.with_wildcard如果 `*` 指定为显示属性则为 `true`false
stop_words.total停用词的数量3
separator_tokens.total分隔符标记的数量3
non_separator_tokens.total非分隔符标记的数量3
dictionary.total字典中的词语数量3
synonyms.total同义词数量3
per_index_uid如果使用 `uid` 获取索引统计资源则为 `true`false
searches.avg_search_count聚合事件每次调用收到的平均搜索查询数量4.2
searches.total_search_count聚合事件收到的搜索查询总数16023
indexes.avg_distinct_index_count聚合事件每次调用收到的平均查询索引数量1.2
indexes.total_distinct_index_count聚合事件的唯一索引查询总数6023
indexes.total_single_index仅查询一个索引时的调用总数2007
matching_strategy.most_used_strategy最常用的单词匹配策略last
infos.with_configuration_file如果实例是通过配置文件启动的则为 `true`false
infos.experimental_composite_embedders如果此实例的 `compositeEmbedders` 功能设置为 `true` 则为 `true`false
infos.experimental_contains_filter如果启用了 `containsFilter` 实验性功能则为 `true`false
infos.experimental_edit_documents_by_function如果启用了 `editDocumentsByFunction` 实验性功能则为 `true`false
infos.experimental_enable_metrics如果启动时指定了 `--experimental-enable-metrics` 则为 `true`false
infos.experimental_embedding_cache_entries配置的嵌入缓存大小100
infos.experimental_replication_parameters如果启动时指定了 `--experimental-replication-parameters` 则为 `true`false
infos.experimental_reduce_indexing_memory_usage如果启动时指定了 `--experimental-reduce-indexing-memory-usage` 则为 `true`false
infos.experimental_logs_mode根据指定的值为 `human` 或 `json`human
infos.experimental_enable_logs_route如果启动时指定了 `--experimental-enable-logs-route` 则为 `true`false
infos.gpu_enabled如果 Meilisearch 是用 CUDA 支持编译的则为 `true`false
swap_operation_number交换操作的数量2
pagination.most_used_navigation最常用的搜索结果导航estimated
per_document_id如果使用了 `DELETE /indexes/:indexUid/documents/:documentUid` 端点则为 `true`false
per_filter如果使用了 `POST /indexes/:indexUid/documents/fetch`、`GET /indexes/:indexUid/documents/` 或 `POST /indexes/:indexUid/documents/delete` 端点则为 `true`false
clear_all如果使用了 `DELETE /indexes/:indexUid/documents` 端点则为 `true`false
per_batch如果使用了 `POST /indexes/:indexUid/documents/delete-batch` 端点则为 `true`false
facets.total_distinct_facet_count聚合事件查询的唯一分面总数false
facets.additional_search_parameters_provided如果为聚合事件提供了额外的搜索参数则为 `true`false
faceting.sort_facet_values_by_star_count如果所有字段都设置为按计数排序则为 `true`false
faceting.sort_facet_values_by_total设置的不同值数量10
scoring.show_ranking_score如果聚合事件中使用了 `showRankingScore` 则为 `true`true
scoring.show_ranking_score_details如果聚合事件中使用了 `showRankingScoreDetails` 则为 `true`true
scoring.ranking_score_threshold如果请求聚合列表中指定了 `rankingScoreThreshold` 则为 `true`true
attributes_to_search_on.total_number_of_uses设置了 `attributesToSearchOn` 的查询总数5
vector.max_vector_size此批次中为 `vector` 参数提供的最高维度数量1536
vector.retrieve_vectors如果此批次中使用了 `retrieve_vectors` 参数则为 `true`。false
hybrid.enabled如果聚合事件中使用了混合搜索则为 `true`true
hybrid.semantic_ratio如果此批次中使用了 `semanticRatio` 则为 `true`,否则为 `false`false
embedders.total已定义嵌入器的数量2
embedders.sources表示不同提供的来源的数组[“huggingFace”, “userProvided”]
embedders.document_template_used一个布尔值,指示所提供的嵌入器中是否有一个定义了自定义模板true
embedders.document_template_max_bytes一个值,指示所有嵌入器中 document TemplateMaxBytes 的最大值400
embedders.binary_quantization_used如果用户更新了嵌入设置的二进制量化字段则为 `true`false
infos.task_queue_webhook如果实例是使用任务队列 webhook 启动的则为 `true`false
infos.experimental_search_queue_size搜索队列的大小750
infos.experimental_dumpless_upgrade如果实例是使用此参数启动的则为 `true`true
locales与 `/search` 和 `/settings` 路由一起使用的地区列表[“fra”, “eng”]
federation.use_federation当至少一个多重搜索请求包含顶级联合对象时为 `true`false
network_has_self如果网络对象具有非空自引用字段则为 `true`true
network_size声明的远程数量0
network当网络实验性功能启用时为 `true`true
experimental_network当网络实验性功能启用时为 `true`true
remotes.total_distinct_remote_count聚合中每个搜索请求中出现的唯一远程总数48
remotes.avg_distinct_remote_count聚合中搜索请求中出现的唯一远程平均数量2.33