自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-06-03 09:23:51 550

原创 【ClickHouse】RollingBitmap

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

2025-05-30 10:23:03 389

原创 【Elasticsearch】suggest_mode

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

2025-05-30 09:40:13 663

原创 【Elasticsearch】suggest

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

2025-05-29 17:33:01 1023

原创 【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 499

原创 【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 521

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

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

2025-05-28 07:58:56 394

原创 【Elasticsearch】stored_fields

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

2025-05-28 07:53:07 557

原创 【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 438

原创 【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 445

原创 【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 371

原创 【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 543

原创 【Elasticsearch】scripted_upsert

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

2025-05-27 09:55:59 516

原创 【Elasticsearch】更新操作原理

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

2025-05-27 09:44:25 397

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

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

2025-05-27 09:34:52 441

原创 【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 409

原创 【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 433

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

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

2025-05-27 09:09:30 544

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

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

2025-05-27 09:05:23 599

原创 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 413

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

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

2025-05-23 13:52:59 547

原创 【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 437

原创 【Elasticsearch】字段别名

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

2025-05-21 17:26:20 338

原创 【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 465

原创 推荐系统架构设计

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

2025-05-06 14:48:28 361

原创 【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 487

原创 【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 587

原创 Logstash支持哪些输入插件

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

2025-04-28 10:48:31 836

原创 es版本号

6.8.97.4.27.17.9。

2025-04-27 16:28:38 333

原创 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 334

原创 【Hbase】查看所有表

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

2025-03-21 10:20:59 529

原创 【Hbase】列族版本问题

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

2025-03-21 08:54:03 783

原创 UGO和ACL

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

2025-03-19 17:28:08 326

原创 【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 333

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

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

2025-03-19 10:46:20 402

原创 在 Kubernetes Pod 中的进程调用 Kubernetes API 时,通常需要啥条件

需要使用服务账号的令牌进行身份验证,并通过`/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`提供的 CA 证书验证 API Server 的证书。服务账号的凭据(如令牌)会自动挂载到 Pod 中的`/var/run/secrets/kubernetes.io/serviceaccount/token`路径。Pod 需要能够访问 Kubernetes API Server 的内部地址(通常是`kubernetes.default.svc`)。

2025-03-18 14:49:20 381

原创 【无标题】`$FLINK_HOME环境变量

如果你需要运行类似`mkdir -p $FLINK_HOME/usrlib`的命令,但不确定`$FLINK_HOME`的值,可以通过以下几种方法来查找或设置它。例如,如果输出是`/opt/flink/bin/flink`,那么 Flink 的安装路径应该是`/opt/flink`。在 Linux 和类 Unix 系统中,环境变量在引用时以`$`开头,但在定义时不需要`$`。如果`$FLINK_HOME`已经被设置,它会输出对应的路径,例如`/opt/flink`或`/usr/local/flink`。

2025-03-18 10:24:45 566

原创 【k8s】containerd兼容docker镜像

Containerd 支持 OCI(Open Container Initiative)规范的镜像格式,而 Docker 镜像也遵循这一规范,因此 Containerd 可以直接使用 Docker 镜像。总之,Containerd 完全兼容 Docker 镜像格式,你可以无缝地将 Docker 镜像迁移到 Containerd 环境中使用。• 镜像构建:Containerd 本身不支持镜像构建功能,但可以通过工具(如`nerdctl`或`buildkit`)来实现。这可以将镜像重新标记为新的名称或版本。

2025-03-18 09:19:27 744

原创 【k8s】serviceaccount是给pod使用的与外部访问k8s无关

2. 在集群外部使用特定的 ServiceAccount:如果你需要在集群外部使用`kubectl`并以特定的`ServiceAccount`身份执行命令,你需要手动配置 kubeconfig 文件或使用`--as`和`--as-group`参数。在上述配置中,`serviceAccountName`被设置为`my-service-account`,表示该 Deployment 创建的 Pod 将使用名为`my-service-account`的服务账户。确保服务账户具有足够的权限来访问所需的资源。

2025-03-18 07:44:49 1560

原创 export HADOOP_CLASSPATH=`hadoop classpath`

**与Apache Spark集成**:在使用Spark处理存储在Hadoop集群上的数据时,需要配置`HADOOP_CLASSPATH`以确保Spark能够访问Hadoop的配置文件和库,从而正确连接到HDFS或其他Hadoop组件。- **使用Hadoop命令行工具**:在执行Hadoop命令行工具(如`hadoop fs`、`hadoop jar`等)时,可能需要访问额外的类或资源,此时设置`HADOOP_CLASSPATH`可以确保这些工具能够正确运行。#### 运行Hadoop应用程序。

2025-03-14 09:11:27 527

xampp配置.doc

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

2018-04-25

空空如也

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

TA关注的人

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