遥测
为了改进我们的产品,Meilisearch 会从用户那里收集匿名数据。可以随时停用,并且任何已收集的数据都可以按要求删除。
我们使用哪些工具来收集和可视化数据?
我们使用 Segment,一个用于数据收集和管理的平台来收集使用数据。然后,我们将这些数据输入到 Amplitude,一个用于绘制和突出显示数据的工具,以便我们可以根据需要构建可视化效果。
我们收集哪些类型的数据?
我们的数据收集侧重于以下类别
- 系统指标,例如运行 Meilisearch 的设备的技术规格、软件版本和操作系统
- 性能指标,例如搜索请求的成功率和平均延迟
- 使用情况指标,旨在评估我们最新的功能。这些会随着每个新版本而变化
请参阅下文,查看我们目前收集的所有已收集指标的完整列表。
我们绝不会
- 识别或跟踪用户
- 收集个人信息,如 IP 地址、电子邮件地址或网站 URL
- 存储添加到 Meilisearch 实例的文档中的数据
为什么要收集遥测数据?
我们收集遥测数据仅出于两个原因:为了改进我们的产品,以及为了我们能够全职继续从事这个项目。
为了创造更好的产品,我们需要可靠的定量信息。我们收集的数据可以帮助我们修复错误、评估功能是否成功,并更好地了解用户的需求。
我们还需要证明确实有人在使用 Meilisearch。使用指标有助于我们向投资者证明我们的存在是合理的,以便我们能够维持这个项目的运转。
您为什么要信任我们?
不要信任我们——监督我们。 我们认为,在涉及您的私人数据时,不信任科技公司是可以理解的,而且实际上是明智的。这就是为什么我们努力保持 关于数据收集的完全透明,提供 选择退出 的方式,并允许用户随时 请求删除所有已收集的数据。在全球数据保护法律缺失的情况下,我们认为这是处理数据收集的唯一合乎道德的方式。
没有公司是完美的。如果您认为我们的透明度不够 100%,或者收集的数据侵犯了您的个人隐私,请通过电子邮件告知我们的专用帐户:[email protected]。同样,如果您发现您认为与我们相关的数据权利倡议或数据保护工具,请分享给我们。我们对这个主题充满热情,并非常重视它。
如何禁用数据收集
可以通过设置命令行选项或环境变量,然后重启 Meilisearch 实例来随时禁用数据收集。
meilisearch --no-analytics
有关配置 Meilisearch 的更多信息,请阅读我们的 配置参考。
如何删除所有收集的数据
我们 Meilisearch 团队提供了一个电子邮件地址,以便用户可以请求从我们的所有工具中完全删除他们的数据。
要执行此操作,请发送电子邮件至 [email protected],其中包含为您的 Meilisearch 安装生成的唯一标识符(启动 Meilisearch 时的 Instance UID
)。有关我们收集的数据管理的任何问题也可以发送到此电子邮件地址。
所有收集的数据的详尽列表
每当触发收集某些数据的事件时,Meilisearch 不会立即发送它。相反,它会将其与其他数据捆绑到一个最大为 500kb
的批次中。批次每小时发送一次,或在达到 500kb
后发送,以先发生者为准。这样做是为了提高性能并减少网络流量。
请注意!
此列表可能会随着 Meilisearch 的每个新版本而更改。这不是因为我们想偷偷摸摸!而是因为当我们添加新功能时,我们需要收集额外的数据点以查看它们的性能。
指标名称 | 描述 | 示例 |
---|---|---|
context.app.version | Meilisearch 版本号 | 0.23.0 |
infos.env | --env /MEILI_ENV 的值 | production |
infos.db_path | 如果指定了 --db-path /MEILI_DB_PATH ,则为 true ,否则为 false | true |
infos.import_dump | 如果指定了 --import-dump ,则为 true ,否则为 false | true |
infos.dump_dir | 如果指定了 --dump-dir /MEILI_DUMP_DIR ,则为 true ,否则为 false | true |
infos.ignore_missing_dump | 如果激活了 --ignore-missing-dump ,则为 true ,否则为 false | true |
infos.ignore_dump_if_db_exists | 如果激活了 --ignore-dump-if-db-exists ,则为 true ,否则为 false | true |
infos.import_snapshot | 如果指定了 --import-snapshot ,则为 true ,否则为 false | true |
infos.schedule_snapshot | 如果启用了计划快照,则为 --schedule_snapshot /MEILI_SCHEDULE_SNAPSHOT 的值,否则为 None | 86400 |
infos.snapshot_dir | 如果指定了 --snapshot-dir /MEILI_SNAPSHOT_DIR ,则为 true ,否则为 false | true |
infos.ignore_missing_snapshot | 如果激活了 --ignore-missing-snapshot ,则为 true ,否则为 false | true |
infos.ignore_snapshot_if_db_exists | 如果激活了 --ignore-snapshot-if-db-exists ,则为 true ,否则为 false | true |
infos.http_addr | 如果指定了 --http-addr /MEILI_HTTP_ADDR ,则为 true ,否则为 false | 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 | false |
infos.ssl_cert_path | 如果指定了 --ssl-cert-path /MEILI_SSL_CERT_PATH ,则为 true ,否则为 false | false |
infos.ssl_key_path | 如果指定了 --ssl-key-path /MEILI_SSL_KEY_PATH ,则为 true ,否则为 false | false |
infos.ssl_ocsp_path | 如果指定了 --ssl-ocsp-path /MEILI_SSL_OCSP_PATH ,则为 true ,否则为 false | false |
infos.ssl_require_auth | --ssl-require-auth /MEILI_SSL_REQUIRE_AUTH 的值,以布尔值表示 | false |
infos.ssl_resumption | 如果指定了 --ssl-resumption /MEILI_SSL_RESUMPTION ,则为 true ,否则为 false | false |
infos.ssl_tickets | 如果指定了 --ssl-tickets /MEILI_SSL_TICKETS ,则为 true ,否则为 false | false |
system.distribution | Meilisearch 启动时所在的发行版 | Arch Linux |
system.kernel_version | Meilisearch 启动时所在的内核版本 | 5.14.10 |
system.cores | 核心数 | 24 |
system.ram_size | 总 RAM 容量。以 KB 表示 | 16777216 |
system.disk_size | 最大磁盘的总容量。以 Bytes 表示 | 1048576000 |
system.server_provider | 用户可以通过填写 MEILI_SERVER_PROVIDER 环境变量告诉我们 Meilisearch 托管在哪个提供商上。我们的云部署脚本也会填写此变量,例如,GCP cloud-config.yaml | GCP |
stats.database_size | 数据库大小。以 Bytes 表示 | 2621440 |
stats.indexes_number | 索引数 | 2 |
start_since_days | 实例启动以来的天数 | 365 |
user_agent | API 调用期间遇到的用户代理头 | ["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 ,否则为 false | true |
sort.avg_criteria_number | 所有包含 sort 参数的搜索请求中排序标准的平均数量 | 2 |
filter.with_geoBoundingBox | 如果指定了过滤规则 _geoBoundingBox ,则为 true ,否则为 false | false |
filter.with_geoRadius | 如果指定了过滤规则 _geoRadius ,则为 true ,否则为 false | 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 | false |
formatting.highlight_post_tag | 如果指定了 highlightPostTag ,则为 true ,否则为 false | false |
formatting.max_attributes_to_crop | 要裁剪的最大属性数 | 100 |
formatting.crop_length | 如果指定了 cropLength ,则为 true ,否则为 false | false |
formatting.crop_marker | 如果指定了 cropMarker ,则为 true ,否则为 false | false |
formatting.show_matches_position | 如果在此批次中使用了 showMatchesPosition ,则为 true ,否则为 false | false |
facets.avg_facets_number | 刻面的平均数量 | 10 |
primary_key | 在文档添加、文档更新、索引创建或索引更新中显式设置的主键名称。否则为 null | id |
payload_type | Content-Type 标头中遇到的所有值,包括无效的值 | ["application/json", "text/plain", "application/x-ndjson"] |
index_creation | 如果文档添加或更新请求触发了索引创建,则为 true ,否则为 false | 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 ,否则为 false | true |
filterable_attributes.total | 可筛选属性的数量 | 3 |
filterable_attributes.has_geo | 如果 _geo 被设置为可筛选属性,则为 true ,否则为 false | false |
searchable_attributes.total | 可搜索属性的数量 | 4 |
searchable_attributes.with_wildcard | 如果 * 被指定为可搜索属性,则为 true ,否则为 false | false |
per_task_uid | 如果使用 uids 来获取特定的任务资源,则为 true ,否则为 false | true |
filtered_by_uid | 如果任务是通过 uids 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_index_uid | 如果任务是通过 indexUids 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_type | 如果任务是通过 types 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_status | 如果任务是通过 statuses 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_canceled_by | 如果任务是通过 canceledBy 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_before_enqueued_at | 如果任务是通过 beforeEnqueuedAt 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_after_enqueued_at | 如果任务是通过 afterEnqueuedAt 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_before_started_at | 如果任务是通过 beforeStartedAt 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_after_started_at | 如果任务是通过 afterStartedAt 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_before_finished_at | 如果任务是通过 beforeFinishedAt 查询参数筛选的,则为 true ,否则为 false | false |
filtered_by_after_finished_at | 如果任务是通过 afterFinishedAt 查询参数筛选的,则为 true ,否则为 false | false |
typo_tolerance.enabled | 如果启用错别字容错,则为 true ,否则为 false | true |
typo_tolerance.disable_on_attributes | 如果至少为一个 disableOnAttributes 定义了值,则为 true ,否则为 false | false |
typo_tolerance.disable_on_words | 如果至少为一个 disableOnWords 定义了值,则为 true ,否则为 false | 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 | false |
distinct | 一个布尔值,指示是否在请求的聚合列表中指定了 distinct。 | true |
proximity_precision.set | 如果该设置已手动设置,则为 true ,否则为 false 。 | fals` |
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 | 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 | 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 | false |
infos.experimental_contains_filter | 如果启用了 containsFilter 实验性功能,则为 true | false |
infos.experimental_edit_documents_by_function | 如果启用了 editDocumentsByFunction 实验性功能,则为 true | false |
infos.experimental_enable_metrics | 如果指定了 --experimental-enable-metrics /MEILI_EXPERIMENTAL_ENABLE_METRICS ,则为 true ,否则为 false | false |
infos.experimental_replication_parameters | 如果在启动时指定了 --experimental-replication-parameters /MEILI_EXPERIMENTAL_REPLICATION_PARAMETERS ,则为 true ,否则为 false | false |
infos.experimental_reduce_indexing_memory_usage | 如果在启动时指定了 --experimental-reduce-indexing-memory-usage /MEILI_EXPERIMENTAL_REDUCE_INDEXING_MEMORY_USAGE ,则为 true ,否则为 false | false |
infos.experimental_logs_mode | 根据指定的值,为 human 或 json 。 | human |
infos.experimental_enable_logs_route | 如果在启动时指定了 --experimental-enable-logs-route /MEILI_EXPERIMENTAL_ENABLE_LOGS_ROUTE ,则为 true ,否则为 false | false |
infos.gpu_enabled | 如果 Meilisearch 是使用 CUDA 支持编译的,则为 true ,否则为 false | false |
swap_operation_number | 交换操作的数量 | 2 |
pagination.most_used_navigation | 最常用的搜索结果导航 | estimated |
per_document_id | 如果使用了 DELETE /indexes/:indexUid/documents/:documentUid 端点,则为 true ,否则为 false | false |
per_filter | 如果使用了 POST /indexes/:indexUid/documents/fetch 、GET /indexes/:indexUid/documents/ 或 POST /indexes/:indexUid/documents/delete 端点,则为 true ,否则为 false | false |
clear_all | 如果使用了 DELETE /indexes/:indexUid/documents 端点,则为 true ,否则为 false | false |
per_batch | 如果使用了 POST /indexes/:indexUid/documents/delete-batch 端点,则为 true ,否则为 false | false |
facets.total_distinct_facet_count | 聚合事件的查询的不同 facets 总数 | false |
facets.additional_search_parameters_provided | 如果为聚合事件提供了额外的搜索参数,则为 true ,否则为 false | false |
faceting.sort_facet_values_by_star_count | 如果所有字段都设置为按计数排序,则为 true ,否则为 false | false |
faceting.sort_facet_values_by_total | 设置的不同值的数量 | 10 |
scoring.show_ranking_score | 如果在聚合事件中使用了 showRankingScore ,则为 true ,否则为 false | true |
scoring.show_ranking_score_details | 如果在聚合事件中使用了 showRankingScoreDetails ,则为 true ,否则为 false | true |
scoring.ranking_score_threshold | 一个布尔值,指示是否在请求的聚合列表中指定了 rankingScoreThreshold | true |
vector_store | 如果启用了向量存储功能,则为 true ,否则为 false | true |
attributes_to_search_on.total_number_of_uses | 如果启用了向量存储功能,则为 true ,否则为 false | true |
vector.max_vector_size | 此批次中为 vector 参数给出的最高维度数 | 1536 |
vector.retrieve_vectors | 如果在此批次中使用了 retrieve_vectors 参数,则为 true。 | false |
hybrid.enabled | 如果在聚合事件中使用了混合搜索,则为 true ,否则为 false | 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 | false |
infos.experimental_search_queue_size | 搜索队列的大小 | 750 |
locales | 与 /search 和 /settings 路由一起使用的区域设置列表 | [“fra”, “eng”] |
federation.use_federation | 如果来自上一个聚合的至少一个多搜索请求包含一个非空的顶级 federation 对象,则为 true | false |