使用 shuf 来打乱一个文件中的行或是选择文件中一个随机的行。

【搜索客社区日报】第1770期 (2024-01-09)

1. 来一手实时数据pipeline吗兄弟(需要梯子)
https://medium.com/simform-eng ... 8174f
2. 用ELK alert让你的系统监控更猴赛雷(需要梯子)
https://medium.com/%40aspirin4 ... 94461
3. 官方的GPT store还没出之前,可以用这个先凑合一下(需要梯子)
https://gptstore.ai/gpts
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. 来一手实时数据pipeline吗兄弟(需要梯子)
https://medium.com/simform-eng ... 8174f
2. 用ELK alert让你的系统监控更猴赛雷(需要梯子)
https://medium.com/%40aspirin4 ... 94461
3. 官方的GPT store还没出之前,可以用这个先凑合一下(需要梯子)
https://gptstore.ai/gpts
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

【搜索客社区日报】第1769期 (2024-01-05)


1、一个Elasticsearch 监控 vue 客户端(昨天还在更新)

https://github.com/cars10/elasticvue


2、Elasticsearch 系统设计小抄

https://betterprogramming.pub/ ... 60463

https://towardsdatascience.com ... ebfff

3、CKibana——为了能够在原生kibana上直接使用ElasticSearch语法查询ClickHouse的服务

https://github.com/TongchengOpenSource/ckibana

4、从 Elasticsearch 7.17 迁移到 Elasticsearch 8.x:陷阱和经验教训

https://engineering.zalando.co ... .html
编辑:铭毅天下 
更多资讯:http://news.searchkit.cn
继续阅读 »

1、一个Elasticsearch 监控 vue 客户端(昨天还在更新)

https://github.com/cars10/elasticvue


2、Elasticsearch 系统设计小抄

https://betterprogramming.pub/ ... 60463

https://towardsdatascience.com ... ebfff

3、CKibana——为了能够在原生kibana上直接使用ElasticSearch语法查询ClickHouse的服务

https://github.com/TongchengOpenSource/ckibana

4、从 Elasticsearch 7.17 迁移到 Elasticsearch 8.x:陷阱和经验教训

https://engineering.zalando.co ... .html
编辑:铭毅天下 
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1768期 (2024-01-04)

1.GitHub 数据库 15 年进化史:幕后英雄如何成就 Copilot 传奇
https://mp.weixin.qq.com/s/cBtvP5Cuehb6rxW_4N3yjg
2.为德语维基百科文章建立索引以进行矢量搜索
https://spinscale.de/posts/202 ... .html
3.搜索含义
https://nb.karmi.cz/semantic-s ... arch/
4.写给工程师的 MacBook 商用级大模型知识库部署方案
https://mp.weixin.qq.com/s/43tPQui6i-WgLvuxlHWLsg

编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.GitHub 数据库 15 年进化史:幕后英雄如何成就 Copilot 传奇
https://mp.weixin.qq.com/s/cBtvP5Cuehb6rxW_4N3yjg
2.为德语维基百科文章建立索引以进行矢量搜索
https://spinscale.de/posts/202 ... .html
3.搜索含义
https://nb.karmi.cz/semantic-s ... arch/
4.写给工程师的 MacBook 商用级大模型知识库部署方案
https://mp.weixin.qq.com/s/43tPQui6i-WgLvuxlHWLsg

编辑:Se7en  
更多资讯:http://news.searchkit.cn 收起阅读 »

搜索客社区日报 第1767期 (2024-01-03)

1.Manticore:一个经典的可以替代Elasticsearch的c++版本
https://manticoresearch.com/bl ... arch/
2.Elasticsearch:在不停机的情况下优化 Elasticsearch Reindex
https://blog.csdn.net/UbuntuTo ... 36303
3.Lucene编码与压缩算法
https://zhuanlan.zhihu.com/p/528406513



编辑:kin122
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Manticore:一个经典的可以替代Elasticsearch的c++版本
https://manticoresearch.com/bl ... arch/
2.Elasticsearch:在不停机的情况下优化 Elasticsearch Reindex
https://blog.csdn.net/UbuntuTo ... 36303
3.Lucene编码与压缩算法
https://zhuanlan.zhihu.com/p/528406513



编辑:kin122
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1766期 (2024-01-02)


2024新年快乐!
1. 抱脸出的NLP教程(需要梯子)
https://huggingface.co/learn/nlp-course
2. 2023 AI 大事记(需要梯子)
https://journal.everypixel.com/2023-the-year-of-ai
3. AI 领域的当红炸子鸡们(需要梯子)
https://writerbuddy.ai/blog/ai-industry-analysis
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »

2024新年快乐!
1. 抱脸出的NLP教程(需要梯子)
https://huggingface.co/learn/nlp-course
2. 2023 AI 大事记(需要梯子)
https://journal.everypixel.com/2023-the-year-of-ai
3. AI 领域的当红炸子鸡们(需要梯子)
https://writerbuddy.ai/blog/ai-industry-analysis
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

INFINI Labs 产品更新 | Console 数据迁移支持 Percentiles 均匀分区

release

INFINI Labs 产品又更新啦~,包括 Console v1.14.0,Gateway 1.21.0。其中 Console 数据迁移支持 Percentiles 均匀分区,修复已知 Bug 等。以下是本次更新的详细说明。

INFINI Console v1.14.0

INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。

Console 在线体验: http://demo.infini.cloud (用户名/密码:readonly/readonly)。

Console 本次更新如下:

Features

  • 数据迁移支持 decimal 类型分区设置
  • 数据迁移支持 number 类型均匀分区

Bug fix

  • 修复告警恢复后,新周期内没有发送告警通知消息的问题

INFINI Gateway v1.21.0

INFINI Gateway 是一个面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway 可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。

Gateway 本次更新如下:

Bug fix

  • fix log error when temp file was missing

INFINI Framework

INFINI Framework 是 INFINI Labs 各产品依赖的内部核心公共代码库。

Framework 本次更新如下:

  • feat: support even partition
  • feat: support nested object
  • fix log error when temp file was missing

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

您还可以通过邮件联系我们:hello@infini.ltd

或者拨打我们的热线电话:(+86) 400-139-9200

欢迎加入 Discord 聊天室:https://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

联系我们

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://www.infinilabs.com

继续阅读 »

release

INFINI Labs 产品又更新啦~,包括 Console v1.14.0,Gateway 1.21.0。其中 Console 数据迁移支持 Percentiles 均匀分区,修复已知 Bug 等。以下是本次更新的详细说明。

INFINI Console v1.14.0

INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。

Console 在线体验: http://demo.infini.cloud (用户名/密码:readonly/readonly)。

Console 本次更新如下:

Features

  • 数据迁移支持 decimal 类型分区设置
  • 数据迁移支持 number 类型均匀分区

Bug fix

  • 修复告警恢复后,新周期内没有发送告警通知消息的问题

INFINI Gateway v1.21.0

INFINI Gateway 是一个面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway 可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。

Gateway 本次更新如下:

Bug fix

  • fix log error when temp file was missing

INFINI Framework

INFINI Framework 是 INFINI Labs 各产品依赖的内部核心公共代码库。

Framework 本次更新如下:

  • feat: support even partition
  • feat: support nested object
  • fix log error when temp file was missing

期待反馈

欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。

您还可以通过邮件联系我们:hello@infini.ltd

或者拨打我们的热线电话:(+86) 400-139-9200

欢迎加入 Discord 聊天室:https://discord.gg/4tKTMkkvVX

也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

联系我们

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://www.infinilabs.com

收起阅读 »

【搜索客社区日报】第1765期 (2023-12-28)

1.Elasticsearch 中的 Serverless 架构
https://www.bilibili.com/video/BV18j411J7C8
2.Elasticsearch “指纹”去重机制,你实践中用到了吗?
https://mp.weixin.qq.com/s/Cq4HZSJYOat-A8N07rWvWw
3.开启安全功能 ES 集群就安全了吗?
https://elasticsearch.cn/article/15070
4.在不停机的情况下优化 Elasticsearch 的 Reindex(需要梯子)
https://blog.stackademic.com/o ... 949d6

编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Elasticsearch 中的 Serverless 架构
https://www.bilibili.com/video/BV18j411J7C8
2.Elasticsearch “指纹”去重机制,你实践中用到了吗?
https://mp.weixin.qq.com/s/Cq4HZSJYOat-A8N07rWvWw
3.开启安全功能 ES 集群就安全了吗?
https://elasticsearch.cn/article/15070
4.在不停机的情况下优化 Elasticsearch 的 Reindex(需要梯子)
https://blog.stackademic.com/o ... 949d6

编辑:Se7en  
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1764期 (2023-12-27)

1.将最大内积引入Lucene
https://cloud.tencent.com/deve ... 62939
2.Elasticsearch 如何处理 Aggs 顺序中的大写字母和小写字母?
https://blog.csdn.net/UbuntuTo ... 32251
3.了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响
https://blog.csdn.net/UbuntuTo ... 35184
4. Elasticsearch 性能调优基础知识
https://blog.csdn.net/UbuntuTo ... 98712

编辑:kin122
更多资讯:http://news.searchkit.cn
继续阅读 »
1.将最大内积引入Lucene
https://cloud.tencent.com/deve ... 62939
2.Elasticsearch 如何处理 Aggs 顺序中的大写字母和小写字母?
https://blog.csdn.net/UbuntuTo ... 32251
3.了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响
https://blog.csdn.net/UbuntuTo ... 35184
4. Elasticsearch 性能调优基础知识
https://blog.csdn.net/UbuntuTo ... 98712

编辑:kin122
更多资讯:http://news.searchkit.cn 收起阅读 »

开启安全功能 ES 集群就安全了吗?

背景

经常跟 ES 打交道的朋友都知道,现在主流的 ES 集群安全方案是:RBAC + TLS for Internal + HTTPS 。

作为终端用户一般只需要关心用户名和密码就行了。作为管理和运维 ES 的人员来说,可能希望 ES 能提供密码策略来强制密码强度和密码使用周期。遗憾的是 ES 对密码强度和密码使用周期没有任何强制要求。如果不注意,可能我们天天都在使用“弱密码”或从不修改的密码(直到无法登录)。而且 ES 对连续的认证失败,不会做任何处理,这让 ES 很容易遭受暴力破解的入侵。

那还有没有别的办法,进一步提高安全呢? 其实,网关可以来帮忙。

虽然网关无法强制提高密码复杂度,但可以提高 ES 集群被暴力破解的难度。

大家都知道,暴力破解--本质就是不停的“猜”你的密码。以现在的 CPU 算力,一秒钟“猜”个几千上万次不过是洒洒水,而且 CPU 监控都不带波动的,很难发现异常。从这里入手,一方面,网关可以延长认证失败的过程--延迟返回结果,让破解不再暴力。另一方面,网关可以记录认证失败的情况,做到实时监控,有条件的告警。一旦出现苗头,可以使用网关阻断该 IP 或用户发来的任何请求。

场景模拟

首先,用网关代理 ES 集群,并在 default_flow 中增加一段 response_status_filter 过滤器配置,对返回码是 401 的请求,跳转到 rate_limit_flow 进行降速,延迟 5 秒返回。

  - name: default_flow
    filter:
      - elasticsearch:
          elasticsearch: prod
          max_connection_per_node: 1000
      - response_status_filter:
          exclude:
            - 401
          action: redirect_flow
          flow: rate_limit_flow
  - name: rate_limit_flow
    filter:
      - sleep:
          sleep_in_million_seconds: 5000

其次,对于失败的认证,我们可以通过 Console 来做个看板实时分析,展示。

折线图、饼图图、柱状图等,多种展示方式,大家可充分发挥。

最后,可在 Console 的告警中心,配置对应的告警规则,实时监控该类事件,方便及时跟进处置。

效果测试

先带上正确的用户名密码测试,看看返回速度。

0.011 秒返回。再使用错误的密码测试。

整整 5 秒多后,才回返结果。如果要暴力破解,每 5 秒钟甚至更久才尝试一个密码,这还叫暴力吗?

看板示例

此处仅仅是抛砖引玉,欢迎大家发挥想象。

告警示例

建立告警规则,用户 1 分钟内超过 3 次登录失败,就产生告警。

可在告警中心查看详情,也可将告警推送至微信、钉钉、飞书、邮件等。

查看告警详情,是 es 用户触发了告警。

最后,剩下的工作就是对该账号的处置了。如果有需要可以考虑阻止该用户或 IP 的请求,对应的过滤器文档在这里,老规矩加到 default_flow 里就行了。

如果小伙伴有其他办法提升 ES 集群安全,欢迎和我们一起讨论、交流。我们的宗旨是:让搜索更简单!

继续阅读 »

背景

经常跟 ES 打交道的朋友都知道,现在主流的 ES 集群安全方案是:RBAC + TLS for Internal + HTTPS 。

作为终端用户一般只需要关心用户名和密码就行了。作为管理和运维 ES 的人员来说,可能希望 ES 能提供密码策略来强制密码强度和密码使用周期。遗憾的是 ES 对密码强度和密码使用周期没有任何强制要求。如果不注意,可能我们天天都在使用“弱密码”或从不修改的密码(直到无法登录)。而且 ES 对连续的认证失败,不会做任何处理,这让 ES 很容易遭受暴力破解的入侵。

那还有没有别的办法,进一步提高安全呢? 其实,网关可以来帮忙。

虽然网关无法强制提高密码复杂度,但可以提高 ES 集群被暴力破解的难度。

大家都知道,暴力破解--本质就是不停的“猜”你的密码。以现在的 CPU 算力,一秒钟“猜”个几千上万次不过是洒洒水,而且 CPU 监控都不带波动的,很难发现异常。从这里入手,一方面,网关可以延长认证失败的过程--延迟返回结果,让破解不再暴力。另一方面,网关可以记录认证失败的情况,做到实时监控,有条件的告警。一旦出现苗头,可以使用网关阻断该 IP 或用户发来的任何请求。

场景模拟

首先,用网关代理 ES 集群,并在 default_flow 中增加一段 response_status_filter 过滤器配置,对返回码是 401 的请求,跳转到 rate_limit_flow 进行降速,延迟 5 秒返回。

  - name: default_flow
    filter:
      - elasticsearch:
          elasticsearch: prod
          max_connection_per_node: 1000
      - response_status_filter:
          exclude:
            - 401
          action: redirect_flow
          flow: rate_limit_flow
  - name: rate_limit_flow
    filter:
      - sleep:
          sleep_in_million_seconds: 5000

其次,对于失败的认证,我们可以通过 Console 来做个看板实时分析,展示。

折线图、饼图图、柱状图等,多种展示方式,大家可充分发挥。

最后,可在 Console 的告警中心,配置对应的告警规则,实时监控该类事件,方便及时跟进处置。

效果测试

先带上正确的用户名密码测试,看看返回速度。

0.011 秒返回。再使用错误的密码测试。

整整 5 秒多后,才回返结果。如果要暴力破解,每 5 秒钟甚至更久才尝试一个密码,这还叫暴力吗?

看板示例

此处仅仅是抛砖引玉,欢迎大家发挥想象。

告警示例

建立告警规则,用户 1 分钟内超过 3 次登录失败,就产生告警。

可在告警中心查看详情,也可将告警推送至微信、钉钉、飞书、邮件等。

查看告警详情,是 es 用户触发了告警。

最后,剩下的工作就是对该账号的处置了。如果有需要可以考虑阻止该用户或 IP 的请求,对应的过滤器文档在这里,老规矩加到 default_flow 里就行了。

如果小伙伴有其他办法提升 ES 集群安全,欢迎和我们一起讨论、交流。我们的宗旨是:让搜索更简单!

收起阅读 »

【搜索客社区日报】第1763期 (2023-12-26)


1. 一个号称最流弊的AI powered搜索引擎(需要梯子)
https://www.perplexity.ai/
2. 数据工程师的端到端练习(I)(需要梯子)
https://medium.com/apache-airf ... ec55e
3. 数据工程师的端到端练习(II)(需要梯子)
https://medium.com/%40dogukann ... 5a9c8
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »

1. 一个号称最流弊的AI powered搜索引擎(需要梯子)
https://www.perplexity.ai/
2. 数据工程师的端到端练习(I)(需要梯子)
https://medium.com/apache-airf ... ec55e
3. 数据工程师的端到端练习(II)(需要梯子)
https://medium.com/%40dogukann ... 5a9c8
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

【搜索客社区日报】 第1762期 (2023-12-25)

【搜索客社区日报】 第1762期 (2023-12-25)
1. 小红书推搜场景下如何优化机器学习异构硬件推理突破算力瓶颈
https://zhuanlan.zhihu.com/p/670350407
2、Elasticsearch Relevance Engine-为AI变革提供高级搜索能力
https://zhuanlan.zhihu.com/p/662175828
3、Elasticsearch 写入优化探索:是什么影响了refresh 耗时
https://mp.weixin.qq.com/s/q8xPMBALoC0L8n9Qn9-6kA
4、elasticsearch 源码解析之选主选举过程
https://blog.csdn.net/taugast/ ... 46985
5、一起学Elasticsearch系列-深度分页问题
https://mp.weixin.qq.com/s/A7Vc291_czAu7WsZsLIdLg

编辑:yuebancanghai
更多资讯:http://news.searchkit.cn
继续阅读 »
【搜索客社区日报】 第1762期 (2023-12-25)
1. 小红书推搜场景下如何优化机器学习异构硬件推理突破算力瓶颈
https://zhuanlan.zhihu.com/p/670350407
2、Elasticsearch Relevance Engine-为AI变革提供高级搜索能力
https://zhuanlan.zhihu.com/p/662175828
3、Elasticsearch 写入优化探索:是什么影响了refresh 耗时
https://mp.weixin.qq.com/s/q8xPMBALoC0L8n9Qn9-6kA
4、elasticsearch 源码解析之选主选举过程
https://blog.csdn.net/taugast/ ... 46985
5、一起学Elasticsearch系列-深度分页问题
https://mp.weixin.qq.com/s/A7Vc291_czAu7WsZsLIdLg

编辑:yuebancanghai
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1761期 (2023-12-22)


1、从 Elasticsearch 到 Apache Doris:升级可观察性平台
https://doris.apache.org/blog/ ... form/

2、使用C#向Elasticsearch 写入数据
https://csharpkh.blogspot.com/ ... .html

3、使用 Docker 和 Docker Compose 运行 Elasticsearch 的初学者指南
https://geshan.com.np/blog/202 ... cker/

4、升级到 elasticsearch-py 8.x 的 10 个理由
https://discuss.elastic.co/t/d ... 47292



编辑:铭毅天下
更多资讯:http://news.searchkit.cn
继续阅读 »

1、从 Elasticsearch 到 Apache Doris:升级可观察性平台
https://doris.apache.org/blog/ ... form/

2、使用C#向Elasticsearch 写入数据
https://csharpkh.blogspot.com/ ... .html

3、使用 Docker 和 Docker Compose 运行 Elasticsearch 的初学者指南
https://geshan.com.np/blog/202 ... cker/

4、升级到 elasticsearch-py 8.x 的 10 个理由
https://discuss.elastic.co/t/d ... 47292



编辑:铭毅天下
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1760期 (2023-12-21)

1.一口气看完43个关于 Elasticsearch 的使用建议|得物技术
https://mp.weixin.qq.com/s/Gsa1rPVISjOdVteol78EoA
2.Source Filtering, Stored Fields, Fields 和 Docvalues Fields 介绍
https://opster.com/guides/elas ... alue/
3.使用 Elasticsearch 检测抄袭
https://www.elastic.co/search- ... earch
4.理解 Elasticsearch Percolate 查询
https://spinscale.de/posts/202 ... .html

编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.一口气看完43个关于 Elasticsearch 的使用建议|得物技术
https://mp.weixin.qq.com/s/Gsa1rPVISjOdVteol78EoA
2.Source Filtering, Stored Fields, Fields 和 Docvalues Fields 介绍
https://opster.com/guides/elas ... alue/
3.使用 Elasticsearch 检测抄袭
https://www.elastic.co/search- ... earch
4.理解 Elasticsearch Percolate 查询
https://spinscale.de/posts/202 ... .html

编辑:Se7en  
更多资讯:http://news.searchkit.cn 收起阅读 »

搜索客社区日报 第1759期 (2023-12-20)

1.Lucene中文分词器:double-array trie与Viterbi算法 - 上篇
https://zhuanlan.zhihu.com/p/532944354
2.Lucene中文分词器:double-array trie与Viterbi算法 - 下篇
https://zhuanlan.zhihu.com/p/532945013
3.全文检索的索引设计
https://zhuanlan.zhihu.com/p/520001238
4. Lucene Filter & Query 深入分析
https://zhuanlan.zhihu.com/p/510441553

编辑:kin122
更多资讯:http://news.searchkit.cn
继续阅读 »
1.Lucene中文分词器:double-array trie与Viterbi算法 - 上篇
https://zhuanlan.zhihu.com/p/532944354
2.Lucene中文分词器:double-array trie与Viterbi算法 - 下篇
https://zhuanlan.zhihu.com/p/532945013
3.全文检索的索引设计
https://zhuanlan.zhihu.com/p/520001238
4. Lucene Filter & Query 深入分析
https://zhuanlan.zhihu.com/p/510441553

编辑:kin122
更多资讯:http://news.searchkit.cn 收起阅读 »

INFINI Gateway 如何防止大跨度查询

背景

业务每天生成一个日期后缀的索引,写入当日数据。 业务查询有时会查询好多天的数据,导致负载告警。 现在想对查询进行限制--只允许查询一天的数据(不限定是哪天),如果想查询多天的数据就走申请。

技术分析

在每天一个索引的情况下,要进行多天的数据查询,有三种途径:

  1. 查询时,指定多个索引
  2. 查询时,写前缀+*号,模糊匹配多个索引
  3. 查询别名,别名关联多个索引

需求实现

我们只需用网关代理 ES 集群,并在 default_flow 中增加一段 request_path_filter 过滤器的配置,只允许查询一个索引且格式如 "xxx-2023-12-06", "xxx.2023.12.06", "xxx20231206" 。

      - request_path_filter:
           message: "Query scope exceeds limit, please contact the administrator for application."
           must:
             suffix:
                - _search
             regex:
                - \/[a-z]+[-.]?\d{4}[-.]?\d{1,2}[-.]?\d{1,2}\/

如果需要指定其他格式,请自行修改 regex 的正则表达式。

创建测试索引

INFINI Console 开发工具中执行下列语句:

POST test-2023-12-06/_doc
{
  "test":"test"
}

POST test-2023-12-6/_doc
{
  "test":"test"
}
POST test.2023.12.06/_doc
{
  "test":"test"
}
POST test.2023.12.6/_doc
{
  "test":"test"
}

POST test20231206/_doc
{
  "test":"test"
}

POST test/_doc
{
  "test":"test"
}

查询测试语句

#预计成功的查询
curl localhost:8000/test-2023-12-06/_search?pretty
curl localhost:8000/test-2023-12-6/_search?pretty
curl localhost:8000/test.2023.12.06/_search?pretty
curl localhost:8000/test.2023.12.6/_search?pretty
curl localhost:8000/test20231206/_search?pretty
#预计失败的查询
curl localhost:8000/test-2023-12-06,test-2023-12-6/_search?pretty
curl localhost:8000/test-2023-12*/_search?pretty
curl localhost:8000/test*/_search?pretty
curl localhost:8000/*/_search?pretty

查询结果

预计成功的查询

预计失败的查询

此外,我们在 Console 中的 Request Analysis 看板中也能看到,哪些请求被拒绝,哪些请求被“放行”。

查询多个索引(多天)

现在我们已经实现了业务只能查一个索引,即一天的数据。当业务需要查询多天的索引时,我们只需创建一个别名,关联多个索引就行了。注意别名也要符合格式要求:字母开头 + 日期格式后缀。 下面我们创建一个 test-1111-1-1 的别名,关联前面的三个测试索引。

POST /_aliases
{
  "actions" : [
    { "add" : { "indices" : ["test-2023-12-06", "test.2023.12.06","test-2023-12-6"], "alias" : "test-1111-1-1" } }
  ]
}

查询别名 待业务查询用完之后,删除别名即可。

POST /_aliases
{
  "actions" : [
    { "remove": { "indices" : ["test-2023-12-06", "test.2023.12.06","test-2023-12-6"], "alias" : "test-1111-1-1" } }
  ]
}

最后,我们只需严格控制别名的创建,就能实现我们最初的需求了。

继续阅读 »

背景

业务每天生成一个日期后缀的索引,写入当日数据。 业务查询有时会查询好多天的数据,导致负载告警。 现在想对查询进行限制--只允许查询一天的数据(不限定是哪天),如果想查询多天的数据就走申请。

技术分析

在每天一个索引的情况下,要进行多天的数据查询,有三种途径:

  1. 查询时,指定多个索引
  2. 查询时,写前缀+*号,模糊匹配多个索引
  3. 查询别名,别名关联多个索引

需求实现

我们只需用网关代理 ES 集群,并在 default_flow 中增加一段 request_path_filter 过滤器的配置,只允许查询一个索引且格式如 "xxx-2023-12-06", "xxx.2023.12.06", "xxx20231206" 。

      - request_path_filter:
           message: "Query scope exceeds limit, please contact the administrator for application."
           must:
             suffix:
                - _search
             regex:
                - \/[a-z]+[-.]?\d{4}[-.]?\d{1,2}[-.]?\d{1,2}\/

如果需要指定其他格式,请自行修改 regex 的正则表达式。

创建测试索引

INFINI Console 开发工具中执行下列语句:

POST test-2023-12-06/_doc
{
  "test":"test"
}

POST test-2023-12-6/_doc
{
  "test":"test"
}
POST test.2023.12.06/_doc
{
  "test":"test"
}
POST test.2023.12.6/_doc
{
  "test":"test"
}

POST test20231206/_doc
{
  "test":"test"
}

POST test/_doc
{
  "test":"test"
}

查询测试语句

#预计成功的查询
curl localhost:8000/test-2023-12-06/_search?pretty
curl localhost:8000/test-2023-12-6/_search?pretty
curl localhost:8000/test.2023.12.06/_search?pretty
curl localhost:8000/test.2023.12.6/_search?pretty
curl localhost:8000/test20231206/_search?pretty
#预计失败的查询
curl localhost:8000/test-2023-12-06,test-2023-12-6/_search?pretty
curl localhost:8000/test-2023-12*/_search?pretty
curl localhost:8000/test*/_search?pretty
curl localhost:8000/*/_search?pretty

查询结果

预计成功的查询

预计失败的查询

此外,我们在 Console 中的 Request Analysis 看板中也能看到,哪些请求被拒绝,哪些请求被“放行”。

查询多个索引(多天)

现在我们已经实现了业务只能查一个索引,即一天的数据。当业务需要查询多天的索引时,我们只需创建一个别名,关联多个索引就行了。注意别名也要符合格式要求:字母开头 + 日期格式后缀。 下面我们创建一个 test-1111-1-1 的别名,关联前面的三个测试索引。

POST /_aliases
{
  "actions" : [
    { "add" : { "indices" : ["test-2023-12-06", "test.2023.12.06","test-2023-12-6"], "alias" : "test-1111-1-1" } }
  ]
}

查询别名 待业务查询用完之后,删除别名即可。

POST /_aliases
{
  "actions" : [
    { "remove": { "indices" : ["test-2023-12-06", "test.2023.12.06","test-2023-12-6"], "alias" : "test-1111-1-1" } }
  ]
}

最后,我们只需严格控制别名的创建,就能实现我们最初的需求了。

收起阅读 »