遥测
Meilisearch 从用户处收集匿名数据以改进我们的产品。请查阅此页面以获取所收集数据的详尽列表以及如何停用遥测的说明。
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.version | Meilisearch 版本号 | 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.distribution | Meilisearch 启动时的发行版 | Arch Linux |
system.kernel_version | Meilisearch 启动时的内核版本 | 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_agent | API 调用期间遇到的 User-agent 头部 | [“Meilisearch Ruby (2.1)”, “Ruby (3.0)“] |
requests.99th_response_time | 99% 最快成功搜索请求中的最高延迟 | 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 |