自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(300)
  • 资源 (1)
  • 收藏
  • 关注

原创 编码器(Encoder)和解码器(Decoder)

预训练模型的基础能力:预训练模型(如 BERT、Word2Vec、Doc2Vec 等)在大规模通用语料上进行了训练,已经学习到了语言的基本模式和语义信息。例如,BERT 通过掩码语言模型(MLM)和下一句预测(NSP)任务进行预训练,目的是让模型能够理解输入文本的语义和上下文关系。例如,GPT 系列和 LLaMA 通过自回归语言模型任务进行预训练,目的是让模型能够根据输入的向量生成高质量的文本。例如,对生成的向量进行降维(如 PCA 或 t-SNE)、归一化等操作,以提高向量的可区分性和一致性。

2025-07-08 22:46:04 551

原创 【Elasticsearch】refresh与提交

写入Lucene段:刷新操作会将内存中的索引缓冲区(Index Buffer)中的数据写入到Lucene的倒排索引中,并创建一个新的Lucene段(Segment)。- 合并数据:提交操作会将Translog中的操作与文件系统缓存中的Lucene段进行合并,确保所有未提交的操作都被持久化。- 提交操作会将Translog中的操作与文件系统缓存中的Lucene段进行合并,确保所有未提交的操作都被持久化。- 提交操作会将文件系统缓存中的Lucene段完全写入到磁盘中,并创建一个新的Lucene提交点。

2025-07-03 11:26:16 377

原创 【Elasticsearch】自定义相似性算法

Elasticsearch 默认使用 BM25 算法,但也可以切换到其他内置的相似度算法,如 TF-IDF 或布尔相似度。通过以上方法,可以根据具体需求自定义 Elasticsearch 的相似度算法,以优化搜索结果的相关性。如果内置算法无法满足需求,可以通过脚本自定义相似度算法。- 如果需要调整已有索引的相似度算法,可以通过关闭索引、更新设置、重新开启索引的方式进行。- 自定义相似度算法需要在创建索引时指定,无法直接修改已有字段的相似度算法。3. 使用脚本自定义相似度算法。1. 使用内置相似度算法。

2025-06-19 11:00:56 342

原创 【Elasticsearch】TF-IDF 和 BM25相似性算法

在 Elasticsearch 中,TF-IDF 和 BM25 是两种常用的文本相似性评分算法,但它们的实现和应用场景有所不同。- 定义与原理:BM2 是5对 TF-IDF 的改进,引入了更多因素,如文档长度归一化和词频饱和度处理。- 如果你的文档集合较小,或者对性能要求极高且对文档长度不敏感,可以考虑使用 TF-IDF。- 如果你的应用场景对文档长度敏感,或者需要更灵活的评分调整,建议使用 BM25。- 不考虑文档长度和查询长度的影响,可能导致长文档评分偏低。- 忽视语义,将文档视为词袋模型,忽略词序。

2025-06-19 10:59:09 380

原创 【Elasticsearch】优化点

语义搜索:利用Elasticsearch的语义搜索功能(如`text`字段的`match`查询结合`synonyms`分析器),理解用户问题的语义,而不仅仅是关键词匹配。- 权重调整:通过调整字段权重(`boosting`查询或`function_score`查询),提高某些字段(如条文标题)的权重,使搜索结果更符合用户需求。- 布尔查询:使用布尔查询(`bool`)结合`must`、`should`、`filter`等子句,实现更复杂的查询逻辑,例如同时满足多个条件的条文。

2025-06-18 13:59:26 277

原创 【Elasticsearch】search_after不支持随机到哪一页,只能用于上一页或下一页的场景

如果需要跳转到任意一页,`search_after` 无法直接实现,因为它无法像 `from` 和 `size` 那样通过偏移量直接定位到目标页。`search_after` 确实不支持随机访问(即直接跳到任意一页),因此在前端需要随机跳转到某一页的场景中,使用 `search_after` 是不合适的。根据你的描述,如果前端允许用户随意点击某一页,那么确实不适合使用 `search_after`,而应该使用 `from` 和 `size` 来实现分页功能。- 不支持随机访问,用户不能直接跳转到任意一页。

2025-06-03 09:23:51 791

原创 【ClickHouse】RollingBitmap

ClickHouse 的 RollingBitmap 是一种基于 Bitmap 的数据结构,用于高效处理数据的动态变化和时间窗口计算。RollingBitmap 的核心思想是将数据按时间窗口切分,每个窗口对应一个 Bitmap,通过滚动窗口的方式动态更新 Bitmap 数据。- 对于一个 30 天的滚动窗口,每天生成一个新的 Bitmap,同时移除最早一天的 Bitmap,从而实现数据的动态更新。1. 高效的时间窗口计算:通过滚动窗口的方式,可以快速计算任意时间范围内的数据,而无需重新扫描整个数据集。

2025-05-30 10:23:03 414

原创 【Elasticsearch】suggest_mode

suggest_mode` 是 Elasticsearch 中 `term suggester` 和 `phrase suggester` 的一个参数,用于控制建议的生成方式。3. `always`:无论输入的词是否存在于索引中,都会提供建议。这种模式会为所有输入的词生成建议,无论它们是否已经存在于索引中。2. `popular`:仅建议在比原始建议文本术语出现频率更高的词。通过 `suggest_mode` 参数,可以根据实际需求调整建议的生成策略,从而优化用户体验和建议的相关性。

2025-05-30 09:40:13 667

原创 【Elasticsearch】suggest

通过 `term suggest`、`phrase suggest`、`completion suggest` 和 `context suggest`,你可以实现拼写纠错、短语建议、自动补全和上下文过滤等功能。在Elasticsearch中,`suggest` 是一个非常强大的功能,用于实现自动补全、拼写纠错和模糊搜索等功能。`phrase suggest` 可以根据用户的输入提供完整的短语建议。`context suggest` 可以结合上下文信息(如分类、标签等)提供更精准的建议。

2025-05-29 17:33:01 1085

原创 【Elasticsearch】exists` 查询用于判断文档中是否存在某个指定字段。它检查字段是否存在于文档中,并且字段的值不为 `null`

这个查询会返回第一个文档(`product_id` 为 `1`),因为它的 `category` 字段存在且值为 `"electronics"`。- 第一个文档(`product_id` 为 `1`),因为它的 `category` 字段存在且值为 `"electronics"`。- 不会返回第二个文档(`product_id` 为 `2`),因为它的 `category` 字段值为 `null`。- 不会返回第三个文档(`product_id` 为 `3`),因为它的 `category` 字段不存在。

2025-05-29 15:09:29 533

原创 【Elasticsearch】track_total_hits

在 Elasticsearch 中,`track_total_hits` 是一个查询参数,用于控制是否精确计算搜索结果的总命中数(`total hits`)。从 Elasticsearch 7.0 开始,`track_total_hits` 参数被引入,以提供更灵活的控制。如果你对总命中数的精确性要求不高,可以将 `track_total_hits` 设置为 `false`,以提高查询性能。如果你需要精确的总命中数,无论结果集大小如何,可以将 `track_total_hits` 设置为 `true`。

2025-05-28 11:04:37 571

原创 【Elasticsearch】控制搜索结果中字段的返回方式

fields` 参数可以用于返回指定的字段值,但需要注意,该参数在较新的版本中已被 `_source` 替代,不过仍然可以使用。`_source` 参数用于控制是否返回 `_source` 字段中的原始 JSON 数据,以及指定需要返回的字段。`stored_fields` 参数用于返回在索引映射中设置为 `store: true` 的字段。- `fields` 参数在旧版本中使用,但已被 `_source` 替代。`inner_hits` 参数用于在嵌套查询中返回嵌套字段的匹配结果。

2025-05-28 07:58:56 412

原创 【Elasticsearch】stored_fields

默认情况下,Elasticsearch 在索引文档时会将所有字段存储在 `_source` 中,而 `_source` 是一个 JSON 格式的字段,包含了完整的文档内容。如果字段没有被存储(`store: false`),则无法通过 `stored_fields` 返回,只能通过 `_source` 获取。- 优化性能:如果只需要检索文档中的某些字段,而不是整个 `_source`,设置 `stored_fields` 可以减少数据传输量,从而提高检索性能。因此,需要根据实际需求合理选择存储的字段。

2025-05-28 07:53:07 563

原创 【Elasticsearch】ingest对于update操作起作用吗?

单条更新:在使用 Update API 进行单条文档更新时,可以通过指定 `pipeline` 参数来应用 Ingest Pipeline。- 批量更新:在使用 `_update_by_query` API 批量更新文档时,也可以结合 Ingest Pipeline。- 性能影响:Ingest Pipeline 的使用会增加一定的处理时间,尤其是在批量更新时。这样在更新文档的同时,Ingest Pipeline 会对更新后的文档进行处理。Ingest Pipeline 在 Update 操作中的应用。

2025-05-27 16:41:46 443

原创 【Elasticsearch】retry_on_conflict

在 Elasticsearch 中,`retry_on_conflict` 是 `_update` 和 `_update_by_query` API 的一个参数,用于处理并发冲突。- `retry_on_conflict`:一个整数值,表示在遇到版本冲突时,Elasticsearch 将重试更新操作的次数。- 高并发环境:在多用户同时更新同一个文档的场景中,`retry_on_conflict` 可以减少因版本冲突导致的更新失败。批量更新(`_update_by_query` API)

2025-05-27 10:01:52 472

原创 【Elasticsearch】_update api用于更新单文档,更新多个文档使用_update_by_query

脚本更新:通过 `script` 参数,可以使用脚本动态更新文档内容,甚至在文档不存在时创建新文档(通过 `scripted_upsert`)。如果你需要更新多个文档,可以使用 `_update_by_query` API,它允许你根据查询条件批量更新文档。- 单文档操作:`_update` API 一次只能操作一个文档,通过指定文档的 `_id` 来定位目标文档。- `_update_by_query` API:适用于批量更新,可以根据查询条件更新多个文档。`_update` API 的特点。

2025-05-27 09:59:58 409

原创 【Elasticsearch】使用脚本删除索引中的某个字段

`ctx._source.remove('field_to_delete')`:从文档中删除字段 `field_to_delete`。- `_update_by_query` 和 `_reindex` 操作可能会对集群性能产生较大影响,尤其是在处理大量数据时。- `query`:指定查询条件,这里使用 `exists` 查询来查找包含字段 `field_to_delete` 的文档。如果你需要删除多个字段,或者需要更复杂的逻辑,可以使用 `_reindex` API 重建索引,并在重建过程中删除字段。

2025-05-27 09:58:23 588

原创 【Elasticsearch】scripted_upsert

在 Elasticsearch 中,`scripted_upsert` 是一个用于更新操作的参数,它允许在文档不存在时通过脚本初始化文档内容,而不是直接使用 `upsert` 部分的内容。当设置 `scripted_upsert` 为 `true` 时,Elasticsearch 会根据脚本逻辑来处理文档的创建和更新,而不是直接使用 `upsert` 部分的内容。- `upsert` 部分:即使设置了 `scripted_upsert`,`upsert` 部分仍然需要提供一个空对象 `{}`,否则会报错。

2025-05-27 09:55:59 528

原创 【Elasticsearch】更新操作原理

Elasticsearch 的更新操作(如 `_update` 和 `_update_by_query`)在底层实现上有一些复杂的原理,这些原理涉及到 Elasticsearch 的数据存储机制、索引机制以及事务日志(Translog)的使用。- 在更新操作时,可以指定 `if_seq_no` 和 `if_primary_term` 参数,以确保只有在文档的序列号和主版本号匹配时才执行更新。- 异步处理:某些更新操作(如 `_flush` 和 `_refresh`)是异步执行的,以减少对请求的阻塞。

2025-05-27 09:44:25 422

原创 【Elasticsearch】PUT` 请求覆盖式更新

当你使用 `PUT` 请求向索引中写入文档时,如果文档已经存在,Elasticsearch 会完全替换整个文档的内容,而不是进行部分更新。如果文档的序列号(`seq_no`)或主版本号(`primary_term`)与提供的值不匹配,Elasticsearch 将拒绝此次更新操作,从而避免覆盖其他用户的更改。- 完全替换文档:当你需要更新文档的大部分内容,或者完全重新定义文档时,`PUT` 是一个合适的选择。- 文档不存在时:`PUT` 请求会创建一个新的文档,并使用提供的 JSON 数据作为文档内容。

2025-05-27 09:34:52 462

原创 【Elasticsearch】_update api的增量更新

当你使用 `_update` API 时,Elasticsearch 会将你提供的更新内容(`doc` 部分)与现有文档进行合并,而不是完全替换整个文档。- `doc_as_upsert` 参数:如果设置了 `doc_as_upsert`,并且文档不存在,`doc` 部分的内容将被用作新文档的完整内容。是的,Elasticsearch 的 `_update` API 支持增量更新。总之,Elasticsearch 的 `_update` API 提供了灵活的增量更新功能,非常适合需要部分更新文档的场景。

2025-05-27 09:29:15 423

原创 【Elasticsearch】doc_as_upsert

在Elasticsearch中,`doc_as_upsert` 是一个用于更新文档的参数,它与 `_update` API 结合使用,用于实现“文档不存在则插入,存在则更新”的功能。- `doc_as_upsert` 参数:当设置为 `true` 时,如果目标文档不存在,`doc` 部分的内容将被用作插入的新文档内容。- 数据一致性:使用 `doc_as_upsert` 时,需要确保 `doc` 部分的内容是完整的,因为这将作为新文档的内容。`doc_as_upsert` 的含义。

2025-05-27 09:21:25 465

原创 【Elasticsearch】调用_flush api会调用_refresh 吗?

在 Elasticsearch 中,`_flush` 操作的目的是将内存中的数据和事务日志(translog)中的操作持久化到磁盘。为了确保数据的一致性和完整性,在 `_flush` 操作开始之前,Elasticsearch 会先执行 `_refresh` 操作,将内存缓冲区中的数据写入到新的 Lucene segment 中并加载到文件系统缓存中。调用 `_flush` API 时,Elasticsearch 会先执行 `_refresh` 操作,以确保数据在持久化到磁盘之前已经处于可搜索的状态。

2025-05-27 09:09:30 553

原创 【Elasticsearch】`_refresh`和`_flush`的区别

性能影响:`_refresh`操作的开销相对较小,但频繁的`_refresh`可能会影响写入性能;- `_flush`操作会先执行`_refresh`,将内存缓冲区中的数据写入新的Lucene segment并加载到文件系统缓存中。- 操作范围:`_refresh`操作主要涉及内存缓冲区和文件系统缓存,而`_flush`操作会将数据写入磁盘并清空事务日志。- 数据可见性:`_refresh`使数据在搜索中可见,而`_flush`主要用于数据的持久化,不影响数据的搜索可见性。- 每30分钟定时触发。

2025-05-27 09:05:23 614

原创 IntelliJ IDEA 中配置 Gradle 的分发方式distribution

Gradle Wrapper 的配置文件是 `gradle-wrapper.properties`,位于项目的 `gradle/wrapper` 目录中。- 你可以在 IDEA 的设置中选择使用 Gradle Wrapper,IDEA 会根据 `gradle-wrapper.properties` 文件中的配置自动处理 Gradle 的下载和使用。如何在 IntelliJ IDEA 中配置 Gradle 的分发方式,包括使用 Gradle Wrapper 或本地安装的 Gradle。

2025-05-25 19:35:03 475

原创 【Elasticsearch】创建别名的几种方式

可以通过 `_aliases` API 动态地将别名从一个索引切换到另一个索引,这种方式可以在零停机的情况下完成索引的切换。在创建索引时,可以直接在索引定义中指定别名。这种方式可以在索引创建的同时完成别名的绑定,避免后续的额外操作。可以同时为多个索引创建同一个别名,这种方式常用于查询多个索引时使用统一的别名。如果索引已经存在,可以通过 `_aliases` API 为索引添加别名。在创建别名时,可以指定某个索引为写入索引,这种方式常用于读写分离的场景。1. 在创建索引时指定别名。4. 为多个索引创建别名。

2025-05-23 13:52:59 604

原创 【Elasticsearch】给所索引创建多个别名

比如,旧索引是`index_v1`,别名为`current_index`,当创建了新索引`index_v2`后,可以将`current_index`别名从`index_v1`切换到`index_v2`,应用程序无需感知底层索引的变化。- 比如,有多个按日期分片的索引`log_202501`、`log_202502`等,可以创建一个别名`all_logs`,将查询请求发送到`all_logs`别名,Elasticsearch 会自动将查询路由到所有相关的索引。为什么可以创建多个别名。

2025-05-23 13:49:25 462

原创 【Elasticsearch】字段别名

Elasticsearch 在索引数据时,是基于实际字段的映射(mapping)来存储数据的。字段别名只是一个查询时的“快捷方式”,并不改变数据的实际存储结构。因此,写入数据时,必须使用实际字段的名称,而不是别名。在 Elasticsearch 中,字段别名(Field Alias)主要用于查询和检索阶段,而不是直接用于写入数据。如果尝试使用别名写入数据,会报错,因为 Elasticsearch 不支持通过别名写入数据。在这个例子中,`alias_field` 是 `actual_field` 的别名。

2025-05-21 17:26:20 370

原创 【Elasticsearch】flattened`类型在查询嵌套数组时可能返回不准确结果的情况

尽管文档中没有完全匹配`city`为`"Anytown"`且`state`为`"CA"`的地址对象,但查询仍然返回了该文档。尽管文档中没有完全匹配`city`为`"Anytown"`且`state`为`"CA"`的地址对象,但查询仍然返回了该文档。在这种情况下,`address`是一个嵌套对象,而不是数组。假设你希望查询所有`city`为`"Anytown"`且`state`为`"CA"`的地址。假设你希望查询所有`city`为`"Anytown"`且`state`为`"CA"`的地址。

2025-05-16 17:08:17 469

原创 推荐系统架构设计

​根据用户的请求,从Redis缓存中提取当前页面的内容。给Redis推荐池设置一个阈值,查询时发现如果Redis缓存中没有足够的内容,就向推荐系统发起消费,推荐系统收到从消费请求,就进行生成推荐内容并更新Redis缓存。​分析用户的活跃模式,确定用户最活跃的时间段。​生成的推荐内容可以包括多个页面,以应对用户可能的分页请求。(模型支持历史推荐去重)​在用户请求时,优先从Redis缓存中获取推荐内容。​定期重新生成推荐内容,并更新Redis缓存。​3. 使用Redis缓存​:​。2. 预生成推荐内容​:​。

2025-05-06 14:48:28 364

原创 【Elasticsearch】在kibana中能获取已创建的api keys吗?

在 Kibana 中,目前没有直接的界面功能可以列出或查看已创建的 API 密钥(API keys)。虽然 Kibana 没有专门的界面来管理 API 密钥,但你可以通过 Kibana 的Dev Tools控制台来执行 Elasticsearch 的 API 请求,从而获取已创建的 API 密钥。虽然 Kibana 没有直接的界面功能来查看 API 密钥,但通过 Dev Tools 控制台,你可以方便地执行 Elasticsearch 的 API 请求来获取已创建的 API 密钥。

2025-05-06 10:55:03 527

原创 【Elastsearch】如何获取已创建的api keys

• 权限要求:只有具有`manage_security`或`manage_api_key`权限的用户才能列出API密钥。在Elasticsearch中,可以通过API获取已创建的API密钥(API keys)。• `-u your_username:your_password`:用于认证,替换为你的用户名和密码。• 过滤参数:可以通过`show_owned`参数控制是否显示当前用户拥有的API密钥。Elasticsearch提供了`GET`API,用于列出当前用户可以访问的所有API密钥。

2025-05-06 10:53:34 646

原创 Logstash支持哪些输入插件

• `start_position`:指定从文件的哪个位置开始读取,可以是`beginning`(从头开始)或`end`(从文件末尾开始)。• 适用场景:适用于与 Redis 集成,从 Redis 的消息队列中接收数据。• 适用场景:适用于物联网(IoT)场景,从 MQTT 消息队列中接收数据。• 适用场景:适用于物联网(IoT)场景,从 MQTT 消息队列中接收数据。• 适用场景:适用于与 Java 应用程序集成,从消息队列中接收数据。• 适用场景:适用于从网络设备、应用程序或其他服务中接收日志或数据。

2025-04-28 10:48:31 856

原创 es版本号

6.8.97.4.27.17.9。

2025-04-27 16:28:38 339

原创 rpm安装beat与安装包解压执行的区别

• 服务管理:会自动创建服务单元文件(如`/etc/systemd/system/filebeat.service`),方便使用`systemctl`命令管理 Filebeat 服务,例如可以使用`systemctl start filebeat`启动服务,`systemctl stop filebeat`停止服务,`systemctl enable filebeat`设置开机自启等。• 配置文件位置:配置文件位于解压目录下的`filebeat.yml`文件中,位置相对灵活,但需要用户记住具体的路径。

2025-04-23 14:33:38 346

原创 【Hbase】查看所有表

在大多数情况下,使用`list`命令或`listTables()`方法时,不需要指定命名空间,它们会默认返回所有表。• HBase Shell:使用`list`命令时,默认会列出所有命名空间中的所有表,而不仅仅是默认命名空间(`default`)中的表。• Java API:使用`HBaseAdmin.listTables()`方法时,默认也会返回所有命名空间中的表。在 HBase 中,查看所有表时,通常不需要指定命名空间,除非有特殊需求或配置。这会获取所有表的名称,包括不同命名空间中的表。

2025-03-21 10:20:59 587

原创 【Hbase】列族版本问题

在 HBase 中,列族版本(VERSIONS)是一个重要的特性,它允许为每个单元格(cell)存储多个版本的数据。• 时间序列分析:对于需要进行时间序列分析的场景,如物联网数据、股票价格走势等,列族版本可以方便地存储和查询数据在不同时间点的值。这段代码将获取表`my_table`中行键为`rowkey1`、列族为`cf1`、列名为`name`的 3 个版本的数据。这条命令会创建一个名为`my_table`的表,其中列族`cf1`的版本数为3,列族`cf2`的版本数为5。

2025-03-21 08:54:03 810

原创 UGO和ACL

• 所有者权限:虽然UGO设置中所有者有`rw`权限,但由于掩码限制为`rw-`,因此所有者的实际权限被限制为`rw`(写权限被保留,因为掩码允许)。• 用户`alice`的ACL权限是`rwx`,但由于掩码限制为`rw-`,因此`alice`的实际权限被限制为`rw`(执行权限被屏蔽)。• 具体规则:UGO权限的实际生效范围是UGO权限与掩码权限的交集。• 其他用户权限:其他用户的UGO权限是`r`,掩码限制为`rw-`,但由于其他用户原本就没有写权限,因此实际权限仍然是`r`。

2025-03-19 17:28:08 333

原创 【Linux】chmod`和`chown`

• `chown -R user1:group1 dir/`:递归地将目录及其所有子目录和文件的所有者更改为`user1`,所属组更改为`group1`。• `chown user1:group1 file.txt`:将文件的所有者更改为`user1`,所属组更改为`group1`。• `chmod`主要用于修改文件或目录的权限,即控制用户对文件或目录的读取、写入和执行操作。在实际使用中,`chmod`和`chown`常常结合使用,以实现对文件或目录的精细权限管理。

2025-03-19 14:46:48 353

原创 【无标题】yarn中的用户名用户组

因此,管理 YARN 的用户权限时,需要先在操作系统层面创建和管理用户及用户组,然后在 YARN 的配置文件中进行相应的权限设置。每个队列可以配置不同的资源配额、优先级等。• 权限检查:根据配置文件(如`fair-scheduler.xml`或`capacity-scheduler.xml`)中定义的权限规则,判断该用户是否有权限提交任务、管理任务或访问特定队列。• 如果其他用户(如`otheruser`)尝试管理任务,YARN 会拒绝操作,因为`otheruser`不在配置的用户或用户组中。

2025-03-19 10:46:20 407

xampp配置.doc

xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置xampp配置

2018-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除