Easysearch 数据可视化和管理平台:INFINI Console 使用介绍
INFINI Labs 小助手 发表了文章 • 0 个评论 • 4098 次浏览 • 2024-07-10 16:26

上次在《[INFINI Easysearch 尝鲜 Hands on](https://infinilabs.cn/blog/202 ... ds-on/)》中,我们部署了两个节点的 Easysearch,并设置了 Console 进行集群监控。今天,我们将介绍 [INFINI Console](https://infinilabs.cn/products/console/) 的使用。
Dashboard
INFINI Console 是一个功能强大的数据管理和分析平台,其仪表盘页面提供了直观简洁的界面,使用户能够快速了解系统状态并进行管理操作。本文将详细介绍仪表盘页面的各项功能。

仪表盘顶部显示系统的实时告警、通知和待办事项的数量,当前数据显示:
- 告警:0 条
- 通知:0 条
- 待办:0 条
在仪表盘的中心区域,用户可以看到几项关键的系统概览信息:
- 集群数量:当前有 3 个集群正在运行。
- 节点数量:系统中有 16 个节点。
- 主机数量:共有 3 台主机。
- 已用存储:系统已使用存储空间为 2.0GB。
仪表盘页面还提供了几个常用操作的快速入口,方便用户迅速访问常用功能:
- 集群注册:用户可以通过此入口快速注册新的集群。
- 数据探索:用户可以访问数据探索工具,对系统中的数据进行分析和查询。
- 告警管理:提供对告警信息的管理功能,用户可以查看和处理告警。
- 安全管理:安全管理入口帮助用户维护系统的安全设置和策略。
仪表盘右侧显示了集群的动态信息,包括最近的操作日志。例如:
- 2024-07-03 22:43:43,index medcl 在 cluster infiniLabs 中的状态更新。
- 2024-07-03 22:06:43,index medcl 在 cluster infiniLabs 中被创建。
集群管理页面
集群管理页面主要分为几个部分:顶部的功能选项卡、中部的集群列表、以及右侧的筛选和排序选项。

页面顶部的功能选项卡包括以下几项:
- Clusters (集群):显示当前系统中的所有集群。
- Nodes (节点):显示集群中的节点详细信息。
- Indices (索引):显示集群中的索引信息。
- Hosts (主机):显示系统中的主机信息。
集群列表展示了每个集群的详细信息,包括:
- 集群名称:每个集群的名称,如 “infinilabs”、“mycluster”、“INFINI_SYSTEM (JeanGrey)”。
- 集群健康状态:以颜色条的形式显示最近 14 天的集群健康状态(绿色表示健康,黄色表示有警告)。
- 节点数量:集群中包含的节点数量。
- 索引数量:集群中的索引数量。
- 分片数量:集群中的分片数量。
- 文档数量:集群中存储的文档数量。
- 磁盘使用率:集群的磁盘使用情况。
- JVM 堆内存使用率:集群的 JVM 堆内存使用情况。
- 索引速率:当前集群的索引速率(每秒索引数)。
- 搜索速率:当前集群的搜索速率(每秒搜索数)。
页面右侧提供了丰富的筛选和排序选项,可以根据以下条件筛选和排序集群:
- 健康状态 (Health Status):根据集群的健康状态筛选,如绿色(健康)和黄色(警告)。
- 分布 (Distribution):根据集群的分布类型筛选,如 “easysearch” 和 “elasticsearch”。
- 版本 (Version):根据集群使用的软件版本筛选,如 Easysearch 1.8.2 和 Elasticsearch 7.10.2。
- 区域 (Region):根据集群所在的区域筛选,如 “china” 和 “default”。
- 标签 (Tags):根据自定义标签进行筛选。
接下来分别介绍节点、索引和主机层面的信息,这些监控指标与集群层面大同小异。
节点监控

索引监控

主机监控
包括了常规的 CPU、内存、磁盘、网络的监控。

监控指标页面
监控报表页面提供了对集群运行状况的详细监控和分析功能。用户可以选择最近 15 分钟、1 小时、24 小时等不同时间范围查看数据,并手动点击刷新按钮更新数据,以获取最新的监控信息。

概览信息
显示当前集群的基本状态,包括:
- 集群名称:如 “infinilabs”。
- 在线时长:如 “3 天”。
- 集群版本:如 “1.8.2”。
- 健康状态:如 “green”。
- 节点数:如 “2”。
- 索引数:如 “38”。
- 主/总分片:如 “38/76”。
- 未分配分片:如 “0”。
- 文档数:如 “656,803”。
- 存储空间:如 “1007.2MB/385.4GB”。
- JVM 内存:如 “1023.0MB/2.0GB”。
监控报表页面还提供了多个性能指标的图表,包括:
索引吞吐 (doc/s)
- Total Indexing:总索引吞吐量。
- Primary Indexing:主分片的索引吞吐量。
查询吞吐 (query/s)
- Total Query:总查询吞吐量。
索引延迟 (ms)
- Indexing Latency:索引延迟时间。
- Delete Latency:删除操作的延迟时间。
查询延迟 (ms)
- Query Latency:查询延迟时间。
- Fetch Latency:获取操作的延迟时间。
- Scroll Latency:滚动操作的延迟时间。
点击“Advance”可以查看更多监控指标:

节点级别性能监控
包括 CPU、负载、JVM 内存、剩余使用空间及磁盘空间、集群启动时间和索引读写情况。

索引级别监控
包括集群内索引的数量、状态、主分片和副本分片数量、文档条数和占用空间。

集群动态页面
提供集群中各类事件和活动的详细记录和监控功能。

别名管理
别名管理页面提供了对索引别名的管理功能,使用户可以方便地管理和配置 Elasticsearch/EasySearch 的索引别名。
创建别名
可以通过 DSL 创建别名。例如,创建一个名为 my_index_alias 的别名指向my_index
:
<br /> POST /_aliases<br /> {<br /> "actions": [<br /> {<br /> "add": {<br /> "index": "my_index",<br /> "alias": "my_index_alias"<br /> }<br /> }<br /> ]<br /> }<br />
删除别名
删除一个别名同样可以通过 REST API 实现:
<br /> POST /_aliases<br /> {<br /> "actions": [<br /> {<br /> "remove": {<br /> "index": "my_index",<br /> "alias": "my_index_alias"<br /> }<br /> }<br /> ]<br /> }<br />
索引轮换
索引轮换是一种常用的索引管理策略,特别适用于日志和时间序列数据的场景。通过索引轮换,用户可以在索引达到一定条件(如大小或文档数量)时,创建一个新的索引来继续存储数据,而旧的索引可以继续用于查询。
- 设置写别名:创建一个指向当前写入索引的别名,例如 current_write_index。
- 定义索引轮换条件:可以基于索引的大小、文档数量或时间来定义轮换条件。
- 索引并更新写别名指向这个新索引。
创建初始索引并设置写别名:
<br /> PUT /my_index-000001<br /> {<br /> "aliases": {<br /> "current_write_index": {}<br /> }<br /> }<br />
使用 /_rollover API 定义轮换条件并执行轮换:
<br /> POST /current_write_index/_rollover<br /> {<br /> "conditions": {<br /> "max_age": "7d",<br /> "max_docs": 1000000<br /> },<br /> "settings": {<br /> "number_of_shards": 1<br /> },<br /> "aliases": {<br /> "current_write_index": {}<br /> }<br /> }<br />
通过这种方式,查询操作可以透明地访问所有历史数据,而写操作总是指向最新的索引。
在 INFINI Console 中提供了可视化创建索引及别名的方式。页面右上角提供了新建按钮,用户可以通过点击该按钮创建新的索引别名,填写别名名称、关联索引、索引路由、搜索路由和过滤查询等配置。

平台监控
展示了多个关键指标的监控图表,包括:
- 设置写别名:创建一个指向当前写入索引的别名,例如 current_write_index。
- 健康状态 (Health):显示系统当前的健康状态。如果没有数据,则显示“暂无数据”。
- 引擎分布 (Engines):展示系统中不同搜索引擎的分布情况,例如 EasySearch 和 Elasticsearch 的比例。图表显示当前 EasySearch 占 67%,Elasticsearch 占 33%。
- 提供商 (Providers):显示系统中使用的云服务提供商信息。在示例中,所有资源都托管在 AWS 上。
- JDK 版本 (JDK):显示系统中使用的 JDK 版本信息。在示例中,所有节点都使用 JDK 版本 11.0.20。
- 磁盘使用情况 (Disk Utilization) - Top 10:显示磁盘使用率最高的前 10 个节点。在示例中,easysearch-node1 和 easysearch-node2 的磁盘使用率均为 4%。
- JVM 使用情况 (JVM Utilization) - Top 10:展示 JVM 使用率最高的前 10 个节点。在示例中,infinilabs 集群的 easysearch-node1 和 easysearch-node2 节点的 JVM 使用情况有详细的时间序列数据,显示了不同时间点的使用率变化。

我们还能够看到更多指标:

数据探索
在数据探索里,可以根据时间、字段等条件对索引或者视图下的数据进行搜索查询和分析,类似 Kibana 的 Discover。

这里可以看到集群的警报,目前集群运行良好,没有任何警报。

内部会预设一些警报规则,如下:

点进去一个请求,比如磁盘的警告,可以针对不同的使用量设置不同的警告级别和通知。

这里针对警报设置警报,可以看到现在支持很多平台,Discord、飞书、邮件、微信、Slack 以及钉钉。

点击进去可以查看,对于社交软件而言,其实是使用 Webhook 进行通知,除此之外也支持配置邮件服务器和自定义的 Webhook 进行通知。

开发工具
Console 的开发工具相当于 Kibana DevTool 的升级版,使用上基本没有大的区别,除了支持 DSL 之外,还支持多集群 Tab 切换、常用命令快速 Load、SQL 查询等。

集群连接凭证管理
可以看到连接这三个集群的凭证管理,目前都是有效的。

后台用户授权
可以添加用户以及修改 Console 管理界面的密码。目前设置了 admin 账号。

审计日志
追踪对集群的操作,捕获查看集群监控信息以及集群索引的操作。

结论
INFINI Console 的仪表盘页面集成了系统的关键信息和快捷操作入口,使用户可以高效地管理和监控系统。通过详细的概览信息、实时的告警通知、快速的功能入口和动态日志,用户能够对系统的运行状态一目了然,并快速响应各种管理需求。这个设计不仅提升了用户的工作效率,还确保了系统的安全和稳定运行。
INFINI Console 的集群管理页面提供了对系统集群的全面监控和管理功能。通过详细的集群信息展示、便捷的功能选项卡切换以及丰富的筛选和排序功能,用户可以高效地管理和监控系统中的集群状态。这不仅提升了运维效率,还确保了系统的稳定运行和高效管理。
INFINI Console 的节点管理页面提供了对集群节点的全面监控和管理功能。通过详细的节点信息展示、便捷的功能选项卡切换以及丰富的筛选和搜索功能,用户可以高效地管理和监控系统中的节点状态,从而提升运维效率,确保系统的稳定运行和高效管理。
INFINI Console 的监控报表页面提供了对集群运行状况的全面监控和分析功能。通过详细的概览信息和多个性能指标图表,用户可以高效地监控和管理集群的运行状态。这不仅提升了系统运维效率,还确保了集群的稳定运行和高效管理。
通过这些功能,INFINI Console 为用户提供了全面的系统管理工具,帮助他们高效地应对各种运维挑战,确保系统的高效、安全、稳定运行。
关于 Easysearch 有奖征文活动

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。
详情查看:[Easysearch 征文活动](https://infinilabs.cn/blog/202 ... ukong/)
作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。
原文:https://blog.csdn.net/weixin_3 ... 77785
INFINI Easysearch 尝鲜 Hands on
INFINI Labs 小助手 发表了文章 • 0 个评论 • 3356 次浏览 • 2024-07-10 14:43

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个自主可控的轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
Easysearch 支持原生 Elasticsearch 的 DSL 查询语法,确保原业务代码无需调整即可无缝迁移。同时,极限科技还支持 SQL 查询,为熟悉 SQL 的开发人员提供更加便捷的数据分析方式。此外,Easysearch 兼容 Elasticsearch 的 SDK 和现有索引存储格式,支持冷热架构和索引生命周期管理,确保用户能够轻松实现数据的无缝衔接。
安装
安装脚本
无论是 Linux 还是 Mac 都是这个一键脚本
bash<br /> curl -sSL <a href="http://get.infini.cloud" rel="nofollow" target="_blank">http://get.infini.cloud</a> | bash -s -- -p easysearch<br />
同时也提供了二进制的安装包:

如果不想整理 JAVA 环境问题,还可以使用这个
[https://release.infinilabs.com ... ndle/](https://release.infinilabs.com ... undle/)
docker 部署
官方提供了 Docker Compose 样例,包括三个服务:
- easysearch-node1
- easysearch-node2
- console
以下是详细说明:
版本控制:
- version: '3' 表示使用 Docker Compose 文件的第 3 版格式。
服务定义:
- easysearch-node1 和 easysearch-node2:
- 这两个服务使用相同的 Docker 镜像 infinilabs/easysearch:latest 来组成双节点的集群。
- 容器运行时使用用户和组 ID 602:602。
- 设置了 ES_JAVA_OPTS 环境变量以配置 Java 虚拟机的内存。
- ulimits 选项配置了内存锁定和文件描述符的限制,以提升性能。
- 容器内的配置、数据和日志目录通过卷映射到主机目录中,以便于数据持久化。
- 服务暴露特定端口,使外部能够访问容器中的服务。
- 两个节点均加入名为 esnet 的自定义网络中。
- 这两个服务使用相同的 Docker 镜像 infinilabs/easysearch:latest 来组成双节点的集群。
- console:
- 该服务使用镜像 infinilabs/console:1.26.0-1552(该镜像没有 latest,需要手动把 latest 更改位特定的版本号)。
- 同样通过卷将数据和日志目录映射到主机。
- 暴露 9000 端口用于 Web 界面访问。
- 使用 links 功能链接到 easysearch-node1 和 easysearch-node2,简化容器之间的通信。
- 设置了时区环境变量 TZ 为 Asia/Shanghai。
网络配置:
- 该服务使用镜像 infinilabs/console:1.26.0-1552(该镜像没有 latest,需要手动把 latest 更改位特定的版本号)。
- esnet 网络使用 bridge 驱动,提供一个隔离的网络环境,配置了特定的子网 172.24.0.0/16,以确保服务之间的网络通信。
```ymal
version: '3'
services:
easysearch-node1:
user: "602:602"
image: infinilabs/easysearch:latest
container_name: easysearch-node1
hostname: easysearch-node1
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes: - $PWD/ezs1/config:/app/easysearch/config
- $PWD/ezs1/data:/app/easysearch/data
- $PWD/ezs1/logs:/app/easysearch/logs
ports: - 9201:9200
- 9301:9300
networks: - esnet
easysearch-node2:
user: "602:602"
image: infinilabs/easysearch:latest
container_name: easysearch-node2
hostname: easysearch-node2
environment: - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes: - $PWD/ezs2/config:/app/easysearch/config
- $PWD/ezs2/data:/app/easysearch/data
- $PWD/ezs2/logs:/app/easysearch/logs
ports: - 9202:9200
- 9302:9300
networks: - esnet
console:
image: infinilabs/console:1.26.0-1552
container_name: console
hostname: console
volumes: - $PWD/console/data:/data
- $PWD/console/log:/log
networks: - esnet
ports: - 9000:9000
links: - easysearch-node1:es1
- easysearch-node2:es2
environment: - TZ=Asia/Shanghai
networks:
esnet:
driver: bridge
ipam:
config:
- subnet: 172.24.0.0/16
<br /> <br /> 尽管在这里官方提供了详细的命令,完全可以使用这个 docker-compose up 来进行替代。其他的脚本解释如下:<br /> <br /> **init.sh**<br /> <br />
bash
!/bin/bash
获取当前脚本所在目录的绝对路径
CUR_DIR=$(cd $(dirname $0); pwd)
创建必要的目录结构
mkdir -p $CUR_DIR/console/{data,log}
mkdir -p $CUR_DIR/{ezs1,ezs2}/{data,logs}
设置目录的拥有者和权限
chown -R 1000:1000 $CUR_DIR/console
chown -R 602:602 $CUR_DIR/{ezs1,ezs2}
chmod -R 0600 $CUR_DIR/{ezs1,ezs2}/config
设置 config 目录的子目录权限
find $CUR_DIR/{ezs1,ezs2}/config -type d -print0 | xargs -0 chmod 750
<br /> <br /> **reset.sh**<br /> <br />
bash!/bin/bash
获取当前脚本所在目录的绝对路径
CUR_DIR=$(cd $(dirname $0); pwd)
定义确认函数
function confirm() {
display_str=$1
default_ans=$2
if [[ $default_ans == 'y/N' ]]; then
must_match='[yY]'
else
must_match='[nN]'
fi
read -p"${display_str} [${default_ans}]:" ans
[[ $ans == $must_match ]]
}
提示用户确认删除所有数据
confirm "RISK WARN: Delete all data!!!" 'y/N' && echo || exit
删除 console、ezs1 和 ezs2 的数据和日志文件
rm -rvf $CUR_DIR/console/{data,log}/
rm -rvf $CUR_DIR/{ezs1,ezs2}/{data,logs}/
<br /> <br /> **start.sh**<br /> <br />
bash!/bin/bash
使用 Docker Compose 启动 ezs2 项目中的服务
docker-compose -p ezs2 up
<br /> <br /> **stop.sh**<br /> <br />
bash!/bin/bash
使用 Docker Compose 关闭并移除 ezs2 项目中的所有服务
docker-compose -p ezs2 down
```
在我的电脑中,可以看到成功启动的容器。

https://infinilabs.cn/docs/lat ... pose/
Console 连接
设置集群连接参数,比如域名端口,用户名密码。

初始化,这里会新建索引,写一些 sample 数据。

设置后台管理的密码,后期使用这个登录控制台。

检查配置,完成集群关联。

这个是后台管理界面,除了用户名密码之外,也支持单点登录:

跨引擎、跨版本、跨集群 独一份!

使用自带的面板进行查看节点数量:

同时也支持 REST 风格的 API 来进行查询。

接下来使用 Console 连接 Amazon 的 OpenSearch:
同样是输入集群的 URL,用户名和密码。

然后可以拿到集群的信息,比如地址,版本号,集群状态,节点数量。

最后看到连接成功的信息。

我们可以在集群管理中看到 Easysearch 的集群和我们刚刚添加的 OpenSearch 集群。

是否开源?目前还没有开放源代码。
关于 Easysearch 有奖征文活动

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。
详情查看:[Easysearch 征文活动](https://infinilabs.cn/blog/202 ... ukong/)
作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。
原文:https://blog.csdn.net/weixin_3 ... 77785
- subnet: 172.24.0.0/16
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
从 OpenAI 停服看中国市场:国产替代崛起的机遇与挑战
INFINI Labs 小助手 发表了文章 • 0 个评论 • 3772 次浏览 • 2024-07-05 11:50

一、OpenAI 停服事件背景
OpenAI 自 2020 年推出 GPT-3 以来,在全球范围内引起了极大的反响。其强大的自然语言处理能力使其成为许多企业和开发者的首选工具。然而,2024 年 6 月 25 日,许多中国用户收到了一封来自 OpenAI 的邮件,邮件中明确表示,自 2024 年 7 月 9 日起,OpenAI 将停止对中国内地和香港地区提供 API 服务。

这一事件引发了国内开发者和企业的广泛讨论,特别是在人工智能技术应用逐渐深入的背景下,OpenAI 的停服无疑会对中国市场产生一定的影响。在 AI 技术迅猛发展的当下,许多中国企业和开发者依赖 OpenAI 的 API 进行各种应用的开发。尤其是在大模型技术领域,不少初创公司通过“套壳”OpenAI 技术快速推向市场。所谓“OpenAI 套壳”,是指一些公司仅对 OpenAI 的技术进行表面包装和小改动,而未进行深度创新 。OpenAI CEO 山姆·奥特曼曾明确指出,简单包装 OpenAI 技术的公司难以长久生存。此次 API 服务的终止,意味着这些企业需要寻找新的技术支持,或者在短时间内加速自主研发 。
二、国产替代的挑战与机遇
OpenAI 停止对中国提供 API 服务将对国内 AI 行业带来短期冲击,但从长远来看,这也可能成为推动国内 AI 技术自主创新和研发的契机。国内企业将被迫加大自主研发力度,减少对外部技术的依赖,从而推动国产 AI 技术的发展 。虽然目前国内大模型企业在技术上与 OpenAI 存在一定差距,但已有不少公司在不断赶超。例如,百度的文心大模型、科大讯飞的星火大模型以及清华智谱的 ChatGLM 基础模型,都在性能上逐渐逼近甚至超过了 GPT-4 。从现状来看,国内大模型厂商已经逐步进入了性能提升的关键期,应用场景从办公、生活拓展到医疗、工业、教育等领域。
三、Elasticsearch 国产化替代的需求

Elasticsearch(简称 ES)作为一种开源的分布式搜索和分析引擎,以其强大的搜索能力和高效的数据处理能力,广泛应用于各种大数据和搜索相关业务场景。然而,随着国际政治环境的变化和技术壁垒的加剧,依赖国外技术的风险日益凸显。在这种背景下,推动 Elasticsearch 的国产化替代至关重要,既能保障国家信息安全,也能促进国内技术自主创新和产业发展。
首先,依赖国外技术可能带来技术封锁风险,一旦国外企业因政治或经济原因停止服务,中国企业的业务连续性和数据安全性将受到威胁。推动国产化替代有助于规避这些风险,保障数据安全和业务的稳定运行。国外搜索引擎和数据库系统通常为西方市场优化,未必适合中国市场。例如,Elasticsearch 在处理中文信息时需要额外的插件和调整,而国产替代方案可以更好地适应本地化需求,同时确保数据存储和处理符合国家法律法规。
其次,推动 Elasticsearch 的国产化替代有助于激发国内企业的创新活力,减少对国外技术的依赖,提升在搜索和大数据领域的核心竞争力。采用国产替代方案不仅能够降低企业的技术成本,还能构建自主的技术生态系统,减少对外部的依赖。与此同时国产化替代也有助于提升国内技术人才水平,通过自主研发和技术创新培养出高水平的技术人才,推动技术创新和产业升级。
在性能和安全方面,Elasticsearch 在数据保护和性能方面存在不足。开源版本不具备数据保护功能,用户必须付费获得相关的安全功能。2021 年 Elastic 公司将其开源软件许可证变更为双授权许可,可能带来安全风险。此外,Elasticsearch 在数据读写性能和集群扩展上也存在技术挑战,进一步推动了国产替代的需求。
四、Easysearch:国产替代的优秀范例

在 OpenAI 退出中国市场的背景下,国产技术的重要性日益凸显。作为国产搜索引擎技术的代表,[Easysearch](https://infinilabs.cn/products/easysearch/) 展示了强大的替代潜力。
[Easysearch](https://infinilabs.cn/products/easysearch/) 是一款基于国内自主研发的高性能搜索引擎,其核心引擎基于开源的 Apache Lucene。与 Elasticsearch 相比,Easysearch 不仅提供了相当的功能,还进行了更具针对性的优化。
- 轻量级:Easysearch 的安装包小于 50MB,部署安装简单,适合企业快速上手。
- 跨平台支持:Easysearch 支持主流操作系统和 CPU 架构,兼容国产信创环境,确保多样化环境下的稳定运行。
- 高性能:Easysearch 针对不同的使用场景进行了优化,以更低的硬件成本提供更高的服务性能,从而实现降本增效。
- 安全增强:Easysearch 默认提供完整的企业级安全功能,支持 LDAP/AD 集成,能够对索引、文档和字段级别进行粒度化权限管控,确保数据的安全性和隐私性。
- 稳定可靠:Easysearch 修复了大量内核问题,解决了内存泄露、集群卡顿和查询缓慢等问题,经过严苛的业务环境考验,保证了其稳定性和可靠性。
- 简单易用:Easysearch 提供了企业级管理后台,运营标准化和自动化,使用户能够通过简单的页面操作实现专家级的运维管理工作。
Easysearch 特别注重数据安全和隐私保护,所有数据都在国内处理和存储,符合数据主权要求。这对关注数据安全和隐私的企业尤为重要,能够有效保障数据的安全性和合规性。
Easysearch 致力于构建一个开放的技术生态,通过丰富的开发者资源和支持,为国内开发者提供了一个强大的技术平台。
- 兼容性:Easysearch 兼容 Elasticsearch 的语法,支持 Elasticsearch 原有的 Query DSL 和 SQL 语法,并且兼容现有的 Elasticsearch SDK。这样,企业和开发者可以平滑地迁移到 Easysearch,无需修改现有代码。
- 中文适配:Easysearch 在功能上进行了中文适配,能够更好地支持中文搜索和分析,满足本地化需求。
- 功能增强:Easysearch 不断完善和增强企业级功能,使其在搜索业务场景中保持简洁与易用性,同时提升功能的丰富度和深度。
- 信创适配:Easysearch 支持信创环境,确保在国产环境中也能平稳运行和使用。
- 平滑迁移:Easysearch 基于网关实现了无缝的跨版本迁移与升级,用户可以随时安全回退,确保系统的持续稳定性。
Easysearch 作为国产搜索引擎技术的代表,展示了国产替代的强大潜力。通过自主研发和技术创新,Easysearch 不仅提供了强大的功能和性能,还确保了数据安全和隐私保护。它为国内企业和开发者提供了一个可靠的技术平台,推动了国产技术的发展和应用。未来,随着更多国产技术的崛起,中国将在全球技术领域占据更加重要的地位。
五、结束语
随着 OpenAI 服务在国内的终止,中国 AI 市场迎来了自主创新的机遇。国内企业如百度、科大讯飞等正加速自主研发,缩小技术差距。同时,在搜索引擎领域,极限科技推出 Easysearch 搜索引擎为 Elasticsearch 国产替代提供了新的选择。展望未来,国产技术的持续创新将助力中国在全球技术领域占据更重要的地位。
关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:[https://www.infinilabs.cn](https://www.infinilabs.cn)

作者:Muses
原文:https://infinilabs.cn/blog/202 ... sing/
天命人, 你在吗?快拿走你的《黑神话:悟空》游戏,去开启神话冒险!Easysearch 有奖征文活动来袭!
INFINI Labs 小助手 发表了文章 • 0 个评论 • 3268 次浏览 • 2024-06-26 23:26
第一章:神秘的召唤
在一个普通的早晨,[INFINI Labs](https://infinilabs.cn/) 的办公室里,阳光透过窗户洒进来,给每个人带来了一天的好心情。就在这时,办公室的公告板上突然出现了一张神秘的海报,上面写着:
“天命人, 你在吗?快拿走你的《黑神话:悟空》游戏,去开启神话冒险!”

这张海报立刻吸引了小编的目光,心中升起了一股好奇心,这究竟是怎样的一个活动?而且,《黑神话:悟空》竟然作为奖品!这可是大家期待已久的国产大作!
第二章:拨开迷雾
《黑神话:悟空》 是一款基于《西游记》改编的中国神话动作角色扮演游戏,由中国游戏公司 Game Science 开发。游戏以其出色的画面和创新的玩法在全球范围内引起了广泛关注,是 2024 年最受期待的国产游戏大作,将于 8 月 20 日正式发售。
在游戏中,玩家将化身“天命之人”——孙悟空,踏上惊险刺激的西游冒险之旅。游戏不仅高度还原了《西游记》中的经典场景和角色,还融入了大量原创元素,带来全新的剧情体验。
第三章:踏上征途
作为“天命之人”,你将穿越重重险阻,挑战强大的妖魔鬼怪,探索神秘的古代遗迹,揭开传说背后的秘密。游戏中充满了紧张刺激的战斗场景和丰富多样的任务,让你能沉浸在这个神话般的世界中。
不要犹豫,加入我们,一起踏上征途,成为传说的一部分吧!
INFINI Labs 首期征文活动来袭!!!
无论你是 [Easysearch](https://infinilabs.cn/products/easysearch/) 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。
征文主题:
- 使用体验:分享你在学习和使用 Easysearch 的体验感受、反馈。
- 案例实践:分享你在工作使用 Easysearch 的案例和实践经验。
- 版本对比:对比不同版本的 Easysearch,聊聊各自的优劣和特点。
- 性能测评:对 Easysearch 的性能进行详细测评,展示其在各种使用场景下的表现。
- 功能解析:深入剖析 Easysearch 的独特功能,让更多人了解它的强大之处。
- 国产替代:探讨 Easysearch 在 Elasticsearch 国产替代中的重要意义及实战经验。
为了帮助首次了解 Easysearch 的小伙伴,我们还会提供技术支持,让你轻松上手,畅快写作。
第四章:创作你的传奇
无论你是哪个领域的爱好者,这次活动都是你展示才华的绝佳机会。拿起笔,写下你的故事,分享你与 Easysearch 的点滴,畅谈你对《黑神话:悟空》的期待。
我们期待着每一个参与者的精彩作品,也期待着与你一起在《黑神话:悟空》的世界中共赴一场史诗级的冒险!
活动时间:即日起至 8 月 20 日
参与方式:微信联系 INFINI Labs 小编(INFINI-Labs),请在加好友时备注【Easysearch 征文】字样。

奖品设置:
- 一等奖:1 名,《黑神话:悟空》游戏数字豪华版
- 二等奖:2 名,《黑神话:悟空》游戏数字标准版
- 三等奖:若干名,INFINI Labs 定制礼品
拿起你的笔,登录 INFINI Labs 社区,开始你的征文之旅。你的故事,我们在这里等你!
活动补充说明
Easysearch 是什么?
Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个自主可控的轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
官网文档:[https://infinilabs.cn/docs/latest/easysearch](https://infinilabs.cn/docs/latest/easysearch/)
征文时间
文章征集:即日起 - 8 月 15 日
文章评审:2024 年 8 月 16 日 - 8 月 19 日
获奖公示:2024 年 8 月 20 日
参与方式
添加 INFINI Labs 小助手微信(INFINI-Labs),进行文章投稿(文章形式不限,如:开源中国、CSDN、微信公众号、掘金、知乎、Markdown、Word、在线文档等)。
使用过程中遇到任何问题,欢迎随时反馈给小助手。
征文要求
- 主题要求:围绕 Easysearch,包括但不限于使用心得、案例实践、功能解析、性能测评、数据迁移、容灾、安全、国产替代、我与 Easysearch 的故事等。
- 文章标题:需包含 Easysearch 关键词,如:Easysearch 入门指南 xxx、如何使用 Easysearch xxx、Easysearch 助力 xxx 等。
- 文章内容:正文字数建议 800 以上,且要求内容结构完整、文字通顺、代码规范、无错别字、尽量做到图文并茂。
- 原创要求:提交的稿件需为原创作品,不得侵犯他人知识产权。
- 加分项:有借鉴性、实用性、创新性。
所有提交投稿文章经由 INFINI Labs 征文组委会进行审核,最终分级别选出一批入围作品,并给予相应奖品。
评奖规则
入围文章排名,分为【组委会打分】和【互动拉票得分】
- 组委会打分:100 分值,权重 60 %
- 内容质量(40%):文章内容符合征文主题,具备原创性、独特性、高质量。
- 创新性(20%):文章内容的创新性,鼓励投稿者用 Easysearch 去完成创造性、有挑战性的任务,并拿到一定的结果。
- 实用性(20%):可以对社区其他用户来带来学习和帮助,获得实用的经验。
- 清晰度(20%):整篇文章是否清晰的被叙述出来,有重点,排版美观,图文并茂。
- 互动拉票得分:100 分值,权重 40%。根据阅读量、点赞量、收藏量三个指标聚合计算。
- 阅读量:每 100 次阅读得 10 分,上限 50 分。
- 点赞量:每个赞得 1 分,上限 30 分。
- 收藏量:每个收藏得 2 分,上限 20 分。
- 加权分数相等时,组委会得分高者排名优先。
说明:
- 一等奖:1 名,《黑神话:悟空》游戏数字豪华版
- 征文将由参与者自行公开发布或提交 INFINI Labs 转发,发布后至评审前一天互动数据有效。
- 严禁刷量和作弊,比如短时间内异常增长的阅读量或点赞量,组委会有权对刷量和作弊文章取消评奖资格。
- 投稿者可以对评分规则提出疑问或建议,并根据反馈进行适当调整。
奖品设置
奖品分级别设置,根据文章综合评分由高到低排序,详细见下表。
| 奖项 | 人数 | 标准 | 奖品 |
| ------ | ------ | --------------------------------------------- | ----------------------------- |
| 一等奖 | 1 人 | 文章具有代表性及影响力,
综合评分由高到低 | 《黑神话:悟空》数字豪华版一套 |
| 二等奖 | 2 人 | 综合评分由高到低 | 《黑神话:悟空》数字标准版一套 |
| 三等奖 | 若干人 | 综合评分由高到低 | 咖啡杯 / 指甲套装 |

其他说明
- 文章文体不限,可以选择与 Easysearch 相关的任何内容。
- 文章必须原创,凡发现转载、抄袭等侵权行为,取消活动参与资格。
- 参加征文活动的文章作者拥有著作权,INFINI Labs 拥有使用权。
- 本次活动每位用户可投递多篇文章,但同一用户最终只能获奖一次。
- 本次活动最终解释权归 INFINI Labs 所有。
关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:[https://infinilabs.cn](https://infinilabs.cn)

原文:https://infinilabs.cn/blog/202 ... kong/
INFINI Labs 产品更新 | Easysearch 1.8.2 发布优化 CCR 性能
liaosy 发表了文章 • 0 个评论 • 3304 次浏览 • 2024-06-09 12:52

INFINI Labs 产品又更新啦~,包括 Easysearch v1.8.2、Gateway、Console、Agent、Loadgen v1.26.0。本次各产品更新了很多亮点功能,如 Easysearch 优化 CCR 同步性能;Gateway 增加了 HTTP 请求动态域名路由功能,移除了安全相关的 Filter,进一步提升 Gateway 稳定性;Console 修复了多个已知问题,如当文档数过亿时单位换算错误,修复了因采集延迟导致指标图表显示异常,修复了多行查询中包含 SQL 查询异常等问题。欢迎大家下载体验。
以下是本次更新的详细说明。
INFINI Easysearch v1.8.2
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。
Easysearch 本次更新如下:
Bug fix
- 修复 source_reuse 与 object 字段为 enable: false 时的冲突
Improvements
- 升级部分依赖包版本,Commons-collections to 3.2.2, Snakeyaml to 2.0
- 优化 CCR 同步性能及调整 CCR 全局配置参数
- 优化插件配置命名,去除"plugins."
- 优化配置文件目录获取命名
INFINI Console v1.26.0
INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。
Console 在线体验: <http://demo.infini.cloud> (用户名/密码:readonly/readonly)。
Console 本次更新如下:
Bug fix
- 修复监控数据布局
- 修复命令存储权限
- 修复多行请求包含 SQL 语法
- 修复文档数过亿时换算错误
- 修复导入低版本 v1.6.0 告警规则缺少字段问题
- 修复当 buck_size 小于 60 秒时,因指标采集延迟导致指标显示异常问题
INFINI Gateway v1.26.0
INFINI Gateway 是一个面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway 可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。
Gateway 本次更新如下:
Improvements
- feat: add wildcard_domain filter
- chore: remove security filter and translog_viewer
INFINI Framework
INFINI Framework 是 INFINI Labs 各产品依赖的内部核心公共代码库。
Framework 本次更新如下:
Improvements
- feat: support dynamic app setting
- feat: add cluster settings query args
- feat: add gateway config
- feat: add http interceptor
- feat: return host info in info api
- feat: add util to convert string to float
- feat: use common app setting api to instead of auth setting api
- feat: crontab task support multi crontab expression
- fix: skip submit empty bulk requests
- feat: support ccr api
- fix: get latest offset should compare segment first
- fix: wrong use of zstd with vfs
- fix: prevent close closed channel
- fix: panic on error while saving keystore
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(<https://github.com/infinilabs>) 中的对应项目中提交 Feature Request 或提交 Bug。
- 下载地址: <https://www.infinilabs.cn/download>
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
欢迎加入 Discord 聊天室:<https://discord.gg/4tKTMkkvVX>
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:<https://www.infinilabs.cn>
从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇
Muses 发表了文章 • 0 个评论 • 5854 次浏览 • 2024-04-11 16:05
引言
近日,Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变,同时也引发了广泛的社区和行业讨论。这不仅是一个关于许可证变更的故事,更是关于开源社区如何响应,以及这一变化如何激发对国产技术探索和发展的深刻思考。Redis,作为最受欢迎的开源键值存储数据库之一,其开源协议的变更反映了开源软件在商业化道路上的挑战和压力。Redis Labs 的 CEO Rowan Trollope 指出,这一变化旨在防止云服务提供商免费使用 Redis 代码,同时促进 Redis 社区的可持续发展和创新。

Redis 协议变更的深远影响
Redis 决定放弃 BSD 协议,转而采用双重源代码可用许可证(RSALv2 和 SSPLv1),标志着开源界的一个重要转折点。这一变化不仅影响了 Redis 本身,更引发了社区成员和技术行业的激烈讨论,许多人担心这将限制 Redis 的开源精神和广泛应用。然而,也有声音认为,这为其他开源项目,如 KeyDB、Dragonfly 和 Garnet 等,提供了发展的机遇,尤其是在提供与 Redis 兼容的替代解决方案方面。尽管 Redis 的这一变更在技术和法律上引发了争议,它也激发了开源社区对于如何在维护开源精神和寻求商业可持续性之间找到平衡的探索。此外,Redis 团队对于保持客户端库的开源许可和继续支持开源社区版的承诺,展示了一种尝试在新的许可模式下保持开放性和可接入性的方法。由于 Redis 的广泛应用,其协议变更对云服务商、Linux 发行版,甚至整个开源软件生态都产生了不小的冲击。一方面,云服务提供商需要重新评估其服务模型;另一方面,一些 Linux 发行版可能需要考虑将 Redis 从其软件仓库中移除。
ES 国产化的契机
Redis 开源协议的变更同时也让人们重新审视其他关键技术,特别是 Elasticsearch(ES)的依赖和发展。ES 作为一个强大的搜索和数据分析引擎,在全球范围内被广泛使用。随着对开源项目商业化模式的重新考量,中国开发者和企业开始寻求国产化的 ES 替代品,旨在减少对外部技术的依赖,同时推动国内技术生态的多元化和自主创新。但是国产化的探索并非没有挑战。从技术兼容性、性能优化到社区生态建设,每一步都需要深思熟虑和持续的努力。然而,Redis 的许可证变更为国内技术自主提供了一个独特的视角,鼓励开发者、企业乃至政府机构更加积极地参与到开源技术的本土化和创新中来。Redis 开源协议的变更引发的讨论和行动,凸显了开源社区对于自身未来发展方向的深刻反思。这一变革不仅关乎一个项目的许可模式转变,更触及到开源项目如何在保持开放和自由的同时,寻找到可持续发展的道路。此外,它也促使更多的开源项目和企业思考如何在全球化的技术生态中保持竞争力和影响力。
Easysearch:国产化的新选择
针对这一需求,极限科技 隆重推出了 [Easysearch](https://infinilabs.cn/docs/latest/easysearch) 搜索引擎软件,旨在提供一个与 Elasticsearch 兼容的国产化解决方案。Easysearch 不仅支持原生 Elasticsearch 的 DSL 查询语法,还提供了诸多企业级功能的增强,如更高的性能、稳定性和扩展性,以及更加丰富的安全管理和数据压缩功能。这表明,国产化技术的发展不仅是为了替代,更是在原有基础上进行创新和优化。ES 国产化解决方案 Easysearch 的推出,是响应国家对信创、自主可控战略布局的具体行动。通过提供兼容性强、功能丰富且稳定的国产技术替代品,不仅有助于减少对外部技术的依赖,也为国内技术生态的繁荣和创新贡献力量。这一过程中,既涵盖了对现有技术的深入理解和应用,也包含了对新技术、新方法的探索和实践。

结语
Redis 开源协议的变更和 Elasticsearch 国产化解决方案的兴起,共同反映了当前技术世界中开源与商业、国际与国产之间复杂而微妙的关系。这一趋势不仅仅是技术领域的变化,更是全球化背景下,各国在技术自主、安全与发展方面所做出的战略性调整。随着更多开源项目和技术面临类似的挑战,我们或许可以预见,技术自主和开源创新将成为推动未来技术发展的两大关键力量。
参考
- https://redis.com/blog/redis-a ... nsing
- https://www.elastic.co/cn/blog/licensing-change
- https://infinilabs.cn/products/easysearch
- https://infinilabs.cn/blog/202 ... ative
- https://infinilabs.cn/blog/202 ... ducts
关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:<https://www.infinilabs.com>
探索搜索引擎的新时代:Windows 安装 Easysearch 完全指南
Muses 发表了文章 • 0 个评论 • 4257 次浏览 • 2024-03-19 21:07
相信最近大家都已经听过Easysearch的名头,成功拿下了墨天轮搜索型数据库的榜首!什么?您不知道?那我再给您介绍下:
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
相信看完了上面您已经对使用Easysearch有了想法,不要想,行动!我将带领您在windows环境中使用[Easysearch](https://infinilabs.com/download/?product=easysearch),有几种安装方法可供选择!
方法一:使用Docker
对于已在Windows系统上安装了Docker的用户来说,通过Docker安装Easysearch是最直接高效的方法。接下来我将介绍Docker部署Easysearch的方法,如果没有安装Docker请跳过!
Docker 环境下使用 Easysearch
在使用 Docker 运行 Easysearch 之前,请确保已进行系统调优并安装好Docker服务,且Docker服务正常运行。
最快方式:启动临时的docker容器,可以从前台查看到admin的初始密码
<br />
bash
docker run --name easysearch -p 9200:9200 dockerproxy.com/infinilabs/easysearch:latest
```
个性配置
从宿主机挂载数据目录及日志目录,并配置jvm内存为512m。
- 在宿主机上创建目录
<br /> bashCopy code<br /> sudo mkdir -p /data/easysearch/{data,logs}<br />
- 修改目录权限
```
bashCopy code
容器内es用户的uid为602,通过调整宿主机的目录权限,确保在容器内部es用户有权限读写挂载的数据卷
sudo chown -R 602.602 /data/easysearch
```
- 后台运行容器
<br /> bashCopy code<br /> docker run -d --restart always -p 9200:9200 \<br /> -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \<br /> -v /data/easysearch/data:/app/easysearch/data \<br /> -v /data/easysearch/logs:/app/easysearch/logs \<br /> --name easysearch --hostname easysearch \<br /> dockerproxy.com/infinilabs/easysearch:latest<br />
- 查看初始密码
```
bashCopy code
由于以上容器是后台启动,需要通过日志找出admin的初始密码
docker logs easysearch 2>/dev/null | grep -w Usage
```容器启停
- 启动容器
<br /> bashCopy code<br /> docker start easysearch<br />
- 停止容器
<br /> bashCopy code<br /> docker stop easysearch<br />
后续验证工作,请继续查看安装指南。
方法二:不使用HTTPS安装Easysearch
在某些情况下,您可能需要或者偏好不通过HTTPS方式进行安装。这种方法需要您手动下载并设置Easysearch及其依赖。
步骤1:下载并安装Easysearch
首先,手动下载 Easysearch 并将其解压到您希望的安装目录。
步骤2:下载并安装JDK
- 手动下载[JDK](https://release.infinilabs.com ... 64.zip)安装包。
- 将JDK解压到Easysearch安装目录下。
- 将解压出来的JDK目录重命名为jdk。
步骤3:修改Easysearch配置
鉴于Windows默认不包含openssl,生成证书可能较为困难。您可以通过修改config/easysearch.yml文件来绕过证书验证:
<br /> security.enabled: false<br />
方法三:通过git-for-windows安装
对于喜欢使用命令行的用户,可以通过安装git-for-windows,利用bash环境来执行安装命令。
步骤1:安装Easysearch
通过以下在线脚本命令安装Easysearch:
<br /> bashCopy code<br /> curl -sSL <a href="http://get.infini.cloud" rel="nofollow" target="_blank">http://get.infini.cloud</a> | bash -s -- -p easysearch -d /d/opt/easysearch<br />
步骤2:下载并安装JDK
- 使用curl命令将JDK下载到指定目录:
<br /> bashCopy code<br /> curl -# <a href="https://release.infinilabs.com/easysearch/jdk/zulu17.42.19-ca-jdk17.0.7-win_x64.zip" rel="nofollow" target="_blank">https://release.infinilabs.com ... 4.zip</a> -o /d/opt/jdk.zip<br />
- 解压JDK文件,并将解压后的目录重命名为jdk。
<br /> bashCopy code<br /> cd /d/opt/easysearch && unzip -q /d/opt/jdk.zip<br /> mv zulu* jdk<br />
步骤3:设置JAVA_HOME环境变量
配置JAVA_HOME环境变量,以确保Easysearch能正确找到JDK。
<br /> bashCopy code<br /> export JAVA_HOME=/d/opt/easysearch/jdk<br />
步骤4:初始化证书、密码和插件
执行以下命令,初始化所需的配置:
<br /> bashCopy code<br /> bin/initialize.sh<br />
步骤5:运行Easysearch
最后,使用以下命令启动Easysearch:
<br /> bashCopy code<br /> bin/easysearch.bat<br />
通过以上任一方法,您都应该能够成功在Windows系统上安装并运行Easysearch。请选择最适合您的需求和环境的安装方法。
请根据Easysearch和JDK的最新版本,适时更新上述命令和下载链接。接下来,请继续完成验证工作。验证工作
为了保证Easysearch数据安全,初始化脚本会为admin用户生成随机的密码,如果使用Docker运行Easysearch或执行初始化脚本时同意记录初始密码到日志文件,则可在Docker日志文件或logs/initialize.log中找到admin用户对应的初始化密码。
由于初始脚本会自动覆盖集群上次使用的证书及内置的admin用户密码,请勿多次运行!如果您忘记了初始密码,可以通过内置的证书来进行密码重置。
```
bashCopy code根据初始化脚本生成的随机密码访问 Easysearch 的 REST API
curl -ku admin:xxx https://localhost:9200
```
也可以在浏览器中输入网址 https://localhost:9200/,即可验证Easysearch是否完成启动。推荐使用[INFINI Console](https://infinilabs.com/docs/latest/console/)来进行集群管理,功能更加强大和方便。
注:各类客户端及周边工具,如 Logstash、Filebeat 请使用7.10.2 oss版本来连接Easysearch。并打开config/easysearch.yml中的配置项elasticsearch.api_compatibility: true
如果你已经按照上面的步骤完成了安装,那么接下来请尽情的使用Easysearch吧!如果在安装过程中出现了问题的请私聊我!对了,希望在其他环境中部署Easysearch的也可以查询我们的安装指南,上面有详细的安装步骤!祝你好运!
Elasticsearch 国产化
yangmf2040 发表了文章 • 0 个评论 • 3258 次浏览 • 2024-03-16 16:36
背景
Elasticsearch 这些年来在搜索领域一直是领头羊。国内也有非常多的企业在使用 Elasticsearch 来做查询搜索、数据分析、安全分析等等。甚至一些很重要的行业、系统都在使用 Elasticsearch。在使用 Elasticsearch 的道路上狂飙的时候,我们也观察到了一些问题:
- Elasticsearch 不再是开源软件了。
- Elastic 公司退出了中国直销市场,不提供本土化支持了。
- 国家对信创、自主可控的战略化布局。
- 国际形势从合作共赢到自闭对垒。
- Elasticsearch 软件本身安全问题频发。
- Elasticsearch 软件在性能、稳定性和扩展性方面存在很大的提升空间。
基于以上这些问题,推出一个 Elasticsearch 国产化解决方案就很有必要了。我们的解决方案是推出一款名为 Easysearch 的软件,作为 Elasticsearch 国产化替代 。
出发点是在兼容原 Elasticsearch 软件的基础之上,完善更多的企业级功能,同时提高产品的性能、稳定性和扩展性。
下面我将从几个方面简单介绍下 Easysearch 软件。
兼容性
支持原生 Elasticsearch 的 DSL 查询语法,原业务代码无需调整。
支持 SQL ,方便熟悉 SQL 的开发人员上手分析数据。
兼容 Elasticsearch 的 SDK。
兼容现有索引存储格式。
支持冷热架构和索引生命周期,真正做到无缝衔接。功能增强
提供企业级的安全管理,可对接 LDAP、AD 认证。
重构分布式架构,保持稳定的同时,能支持更大规模的数据。
在不降低性能的同时,实现更高压缩比的数据压缩,直接节省磁盘 40% 以上。
支持 KNN、异步搜索、数据脱敏、可搜索快照、审计等企业级功能。容灾
支持基于 CDC 的集群复制技术,实现同版本间的容灾。
支持基于请求双写的复制技术,实现跨版本容灾。信创
全面适配国产 CPU、操作系统,并获得厂家认证。
迁移方案
支持原索引存储格式,可通过快照备份直接恢复到 Easysearch 集群。
提供迁移工具,直接可视化操作迁移数据。
简单的介绍就到这里了,更多信息请访问:[https://www.infinilabs.com/products/easysearch](https://www.infinilabs.com/products/easysearch/)最后
如有需要请联系我,让我们一起位祖国的信创事业添砖加瓦。

Easysearch 内核完善之 OOM 内存溢出优化案例一则
liaosy 发表了文章 • 0 个评论 • 2187 次浏览 • 2024-03-15 10:37

最近某客户在使用 Easysearch 做聚合时,报出 OOM 导致掉节点的问题,当时直接让客户试着调整 indices.breaker.request.limit
,但是不起作用,于是又看了下 Easysearch 在断路器相关的代码,并自己测试了下。
断路器的种类和作用
Easysearch 内部有个 Circuit breaker 机制,目的是防止各种请求的负载过大导致 OutOfMemoryError
,比较常用的断路器有 7 种,分别是:
- Parent circuit breaker 父断路器
- Field data circuit breaker fielddata 断路器
- Request circuit breaker 请求断路器
- In flight requests circuit breaker 传输请求断路器
- Accounting requests circuit breaker lucene 内存占用断路器
- Script compilation circuit breaker 脚本编译断路器
- Regex circuit breaker 正则表达式断路器
其中在执行消耗内存较多的聚合查询时,Request circuit breaker 用得最多。
复现测试
我在模拟客户场景测试聚合查询时,发现断路器并没有覆盖查询的整个流程,仍然会有 OOM 的风险。我测试了一个高基数 5 百万的 Terms aggregation,就没有触发断路,而是在等待了 1 分多钟后直接 OOM 了。我的测试环境是单节点 内存配置为-Xmx1g
,测试索引只有 1 个 shard。
测试语句如下:
<br /> curl -X GET "localhost:9211/leader-01/_search?pretty" -H 'Content-Type: application/json' -d'<br /> {<br /> "size": 1,<br /> "aggs": {<br /> "a": {<br /> "terms": { "field": "agent.id.keyword", "size": 5000000 }<br /> }<br /> }<br /> }' > a.txt<br />
Easysearch OOM 日志:

内存泄漏分析
使用 MemoryAnalyzer 分析生成的 jvm 堆转储文件:

最大的内存占用来自 Java 线程java.lang.Thread @ 0x7c8bb1d00
。这个线程浅层(Shallow)保留的对象占用了 112.8MB 内存。但该线程实际保留(Retained)的对象内存占用高达 851 MB,成为整个内存占用的绝对大头。
进一步查看 Leak Suspects:

非常明确的给出了具体的内存泄露的对象:StringTerms$Bucket[7500010]
数组长度达到了七百五十万,占用内存:731,001,720 字节(占总内存的 68.65%)。
按照提示的GlobalOrdinalsStringTermsAggregator.java:586
行,去查看代码,实际上是将收集完的OrdBucket
转换为StringTerms.Bucket
,并且有一个copy BytesRef
的操作。
至此,原因和解决办法都清楚了,只要在转换之前预估一下将要增长的内存并调用断路器检测一下内存,一旦超出允许范围就快速触发CircuitBreakingException
,避免长时间等待后 OOM 引起的节点宕机了。
最新版 Elasticsearch 对比
作为对比,我又测试了下 Elasticsearch 最新版本 8.12.2,同样的测试环境和测试方法,结果依然是 OOM:

从这里可以看出 Elasticsearch 即使是最新版的断路器机制也还有很多改进的余地,比如增加对有 OOM 风险查询的覆盖率,还有就是在触发 GC 时,对 GC 堆内存回收的判断过于简单。
Easysearch 最新版本的改进
Easysearch 刚刚发布的 1.7.1 版本已经增加了上面的改进,后面也会持续改进查询聚合操作的内存控制,最新版本的跨集群复制(CCR)也增加了对 source_reuse 索引的支持,能更好的满足客户降本增效的需求,欢迎大家下载试用。
附官网下载链接:<https://www.infinilabs.com/dow ... gt%3B
关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
官网文档:<https://www.infinilabs.com/doc ... gt%3B
作者:张磊,原文:<https://www.infinilabs.com/blo ... gt%3B
INFINI Labs 产品更新 | Easysearch 1.7.1发布,改进跨集群复制的数据加载等
liaosy 发表了文章 • 0 个评论 • 2768 次浏览 • 2024-03-04 15:25

INFINI Labs 产品又更新啦~,包括 Console,Gateway,Agent 1.23.0 和 Easysearch 1.7.1。本次各产品更新了很多亮点功能,如 Console 优化实例管理中增加磁盘空闲空间显示,Easysearch 改进 HierarchyCircuitBreakerService 并添加断路器、改进跨集群复制的数据加载,增加对 source_reuse 索引的支持等。欢迎大家下载体验。
以下是本次更新的详细说明。
INFINI Easysearch v1.7.1
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。
Easysearch 本次更新如下:
Bug fix
- 修复 source_reuse 与字段别名冲突
- 改进 HierarchyCircuitBreakerService 并添加断路器
- 修复 _meta 不为空且 启用 source_reuse 时的映射解析错误
- 修复 source_reuse 下对多值还原不正确的问题
Improvements
- 改进 HierarchyCircuitBreakerService 并添加断路器
- 改进跨集群复制的数据加载,增加对 source_reuse 索引的支持
INFINI Console v1.23.0
INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。
Console 在线体验: <http://demo.infini.cloud> (用户名/密码:readonly/readonly)。
Console 本次更新如下:
Bug fix
- 修复数据迁移中数据分片范围因精度导致数据溢出显示为负数
- 修复删除实例队列后消费的 Offset 未重置问题
- 修复网友提出的各种问题,如集群设置默认打开节点、索引采集等
Improvements
- 优化初始化配置向导,分步骤执行
- 优化实例管理中增加磁盘空闲空间显示
- 优化实例队列名称显示
INFINI Gateway v1.23.0
INFINI Gateway 是一个面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway 可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。
Gateway 本次更新如下:
Bug fix
- 修复删除实例队列后消费的 Offset 未重置问题
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(<https://github.com/infinilabs>) 中的对应项目中提交 Feature Request 或提交 Bug。
- 下载地址: <https://www.infinilabs.com/download>
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
欢迎加入 Discord 聊天室:<https://discord.gg/4tKTMkkvVX>
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。

关于极限科技(INFINI Labs)

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
官网:<https://www.infinilabs.com>
如何防止 Elasticsearch 服务 OOM?
yangmf2040 发表了文章 • 0 个评论 • 3183 次浏览 • 2024-02-26 10:12
Elasticsearch(简称:ES) 和传统关系型数据库有很多区别, 比如传统数据中普遍都有一个叫“最大连接数”的设置。目的是使数据库系统工作在可控的负载下,避免出现负载过高,资源耗尽,谁也无法登录的局面。
那 ES 在这方面有类似参数吗?答案是没有,这也是为何 ES 会被流量打爆的原因之一。
针对大并发访问 ES 服务,造成 ES 节点 OOM,服务中断的情况,极限科技旗下的 [INFINI Gateway](https://www.infinilabs.com/products/gateway/) 产品(以下简称 “极限网关”)可从两个方面入手,保障 ES 服务的可用性。
- 限制最大并发访问连接数。
- 限制非重要索引的请求速度,保障重要业务索引的访问速度。
下面我们来详细聊聊。
架构图

所有访问 ES 的请求都发给网关,可部署多个网关。
限制最大连接数
在网关配置文件中,默认有最大并发连接数限制,默认最大 10000。
```
entry:- name: my_es_entry
enabled: true
router: my_router
max_concurrency: 10000
network:
binding: $[[env.GW_BINDING]]
See
gateway.disable_reuse_port_by_default
for more information.reuse_port: true
```
使用压测程序测试,看看到达10000个连接后,能否限制新的连接。

超过的连接请求,被丢弃。更多信息参考[官方文档](https://www.infinilabs.com/doc ... entry/)。
限制索引写入速度
我们先看看不做限制的时候,测试环境的写入速度,在 9w - 15w docs/s 之间波动。虽然峰值很高,但不稳定。

接下来,我们通过网关把写入速度控制在最大 1w docs/s 。
对网关的配置文件 gateway.yml ,做以下修改。
```yaml
env: # env 下添加
THROTTLE_BULK_INDEXING_MAX_BYTES: 40485760 #40MB/s
THROTTLE_BULK_INDEXING_MAX_REQUESTS: 10000 #10k docs/s
THROTTLE_BULK_INDEXING_ACTION: retry #retry,drop
THROTTLE_BULK_INDEXING_MAX_RETRY_TIMES: 10 #1000
THROTTLE_BULK_INDEXING_RETRY_DELAY_IN_MS: 100 #10
router: # route 部分修改 flow - name: my_router
default_flow: default_flow
tracing_flow: logging_flow
rules:
- method:
- "*"
pattern: - "/_bulk"
- "/{any_index}/_bulk"
flow: - write_flow
flow: #flow 部分增加下面两段
- "*"
- method:
- name: write_flow
filter:
- flow:
flows:
- bulking_indexing_limit
- bulking_indexing_limit
- elasticsearch:
elasticsearch: prod
max_connection_per_node: 1000
- flow:
- name: bulking_indexing_limit
filter:
- bulk_request_throttle:
indices:
"test-index":
max_bytes: $[[env.THROTTLE_BULK_INDEXING_MAX_BYTES]]
max_requests: $[[env.THROTTLE_BULK_INDEXING_MAX_REQUESTS]]
action: $[[env.THROTTLE_BULK_INDEXING_ACTION]]
retry_delay_in_ms: $[[env.THROTTLE_BULK_INDEXING_RETRY_DELAY_IN_MS]]
max_retry_times: $[[env.THROTTLE_BULK_INDEXING_MAX_RETRY_TIMES]]
message: "bulk writing too fast" #触发限流告警message自定义
log_warn_message: true
```
再次压测,test-index 索引写入速度被限制在了 1w docs/s 。

限制多个索引写入速度
上面的配置是针对 test-index 索引的写入速度控制。如果想添加其他的索引,新增一段配置即可。
比如,我允许 abc 索引写入达到 2w docs/s,test-index 索引最多不超过 1w docs/s ,可配置如下。
```yaml
- bulk_request_throttle:
- name: bulking_indexing_limit
filter:
- bulk_request_throttle:
indices:
"abc":
max_requests: 20000
action: drop
message: "abc doc写入超阈值" #触发限流告警message自定义
log_warn_message: true
"test-index":
max_bytes: $[[env.THROTTLE_BULK_INDEXING_MAX_BYTES]]
max_requests: $[[env.THROTTLE_BULK_INDEXING_MAX_REQUESTS]]
action: $[[env.THROTTLE_BULK_INDEXING_ACTION]]
retry_delay_in_ms: $[[env.THROTTLE_BULK_INDEXING_RETRY_DELAY_IN_MS]]
max_retry_times: $[[env.THROTTLE_BULK_INDEXING_MAX_RETRY_TIMES]]
message: "bulk writing too fast" #触发限流告警message自定义
log_warn_message: true
```
限速效果如下

限制读请求速度
我们先看看不做限制的时候,测试环境的读取速度,7w qps 。

接下来我们通过网关把读取速度控制在最大 1w qps 。
继续对网关的配置文件 gateway.yml 做以下修改。
```yaml
- bulk_request_throttle:
- name: default_flow
filter:
- request_path_limiter:
message: "Hey, You just reached our request limit!" rules:
- pattern: "/(?P
abc)/_search"
max_qps: 10000
group: index_name
- pattern: "/(?P
- elasticsearch:
elasticsearch: prod
max_connection_per_node: 1000
```
再次进行测试,读取速度被限制在了 1w qps 。

限制多个索引读取速度
上面的配置是针对 abc 索引的写入速度控制。如果想添加其他的索引,新增一段配置即可。
比如,我允许 abc 索引读取达到 1w qps,test-index 索引最多不超过 2w qps ,可配置如下。
```yaml
- request_path_limiter:
- name: default_flow
filter:
- request_path_limiter:
message: "Hey, You just reached our request limit!"
rules:
- pattern: "/(?P
abc)/_search"
max_qps: 10000
group: index_name - pattern: "/(?P
test-index)/_search"
max_qps: 20000
group: index_name
- pattern: "/(?P
- elasticsearch:
elasticsearch: prod
max_connection_per_node: 1000
```

多个网关限速
限速是每个网关自身的控制,如果有多个网关,那么后端 ES 集群收到的请求数等于多个网关限速的总和。

本次介绍就到这里了。相信大家在使用 ES 的过程中也遇到过各种各样的问题。欢迎大家来我们这个平台分享自己的问题、解决方案等。如有任何问题,请随时联系我,期待与您交流!

- request_path_limiter:
- name: my_es_entry
用 Easysearch 帮助大型车企降本增效
yangmf2040 发表了文章 • 0 个评论 • 5304 次浏览 • 2024-02-02 15:15
最近某头部汽车集团需要针对当前 ES 集群进行优化,背景如下:
ES 用于支撑包括核心营销系统、管理支持系统、财务类、IT 基础设施类、研发、自动驾驶等多个重要应用,合计超 50 余套集群,累计数据超 1.5PB 。
本文针对其中一个 ES 集群进行分享,该集群原本使用的是 ES 7.3.2 免费版,数据已经 130TB 了,14 个节点。写入数据时经常掉节点,写入性能也不稳定,当天的数据写不完。迫切需要新的解决方案。
分析业务场景后总结需求要点:主要是写,很少查。审计需求,数据需要长期保存。
这个需求比较普遍,处理起来也很简单:
- 使用 Easysearch 软件,只需少量节点存储近两天的数据。
- 索引设置开启 ZSTD 压缩功能,节省磁盘空间。
- 每天索引数据写完后,第二天执行快照备份存放到 S3 存储。
- 备份成功后,删除索引释放磁盘空间。
- 需要搜索数据时,直接从快照搜索。

将近期的数据,存放到本地磁盘,保障写入速度。写入完毕的索引,在执行快照备份后,可删除索引,释放本地磁盘空间。
Easysearch 配置要点
<br /> path.repo: ["/S3-path"]<br /> node.roles: ["data","search"]<br /> node.search.cache.size: 500mb<br />
- path.repo : 指定 S3 存储路径,上传快照用。
- node.roles : 只有 search 角色的节点,才能去搜索快照中的数据。
- node.search.cache.size : 执行快照搜索时的,缓存大小。
更多信息请参考[官方文档](https://www.infinilabs.com/doc ... pshot/)。
旧数据迁移
通过 Console 将原 ES 集群的数据,迁移到新 Easysearch 集群。迁移时,复制 mapping 和 setting,并在 setting 中添加如下设置。
<br /> "codec": "ZSTD",<br /> "source_reuse": true,<br />


原索引数据量大,可拆分成多个小任务。

迁移完,索引存储空间一般节省 50% 左右。
原索引 279GB ,迁移完后 138GB。

搜索快照数据
挂载快照后,搜索快照里的索引和搜索本地的索引,语法完全一样。

如何判断一个索引是在快照还是本地磁盘呢?可以查看索引设置里的 settings.index.store.type

如果是 remote_snapshot ,说明是快照中的数据。如果是空值,则是集群本地的数据。
这次迁移,节省了 6 台主机资源。更重要的是,用上对象存储后,主机磁盘空间压力骤减。
这次介绍就到这里了,有问题联系我。

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
官网文档:<https://infinilabs.com/docs/latest/easysearch>
Easysearch:语义搜索、知识图和向量数据库概述
liaosy 发表了文章 • 0 个评论 • 5903 次浏览 • 2024-01-24 20:56
什么是语义搜索?
语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。旨在更好地理解用户的意图和查询内容,而不仅仅是根据关键词匹配,还通过分析查询的语义和上下文来提供更准确和相关的搜索结果。
传统的关键词搜索主要依赖于对关键词的匹配,而忽略了查询的含义和语境。但语义搜索的优点在于它可以更好地满足用户的意图,尤其是对于复杂的查询和问题。它能够理解查询的上下文,处理模糊或不完整的查询,并提供更相关和有用的搜索结果。例如,当用户搜索"最近的餐厅"时,语义搜索可以根据用户的位置信息和上下文,提供附近的餐厅列表,而不仅仅是简单地匹配关键词"最近"和"餐厅"。

语义搜索的历史
语义搜索的概念可以追溯到计算机科学的早期,在 20 世纪 50 年代和 1960 年代就有人尝试开发自然语言处理系统。然而,直到 20 世纪 90 年代和 2000 年代,语义搜索领域才取得了重大进展,这在一定程度上要归功于机器学习和人工智能的进步。
语义搜索最早的例子之一是 Douglas Lenat 在 1984 年创建的 Cyc 项目。该项目旨在建立一个全面的常识知识本体或知识库,可用于理解自然语言查询。虽然 Cyc 项目面临诸多挑战,最终没有实现其目标,但它为未来语义搜索的研究奠定了基础。
20 世纪 90 年代末,Ask Jeeves(现称为 Ask.com)等搜索引擎开始尝试自然语言查询和语义搜索技术。这些早期的努力受到当时技术的限制,但它们展示了更复杂的搜索算法的潜力。
2000 年代初 Web 本体语言 (OWL) 的发展提供了一种以机器可读格式表示知识和关系的标准化方法,使得开发语义搜索算法变得更加容易。2008 年被微软收购的 Powerset 和 2007 年推出的 Hakia 等公司开始使用语义搜索技术来提供更相关的搜索结果。
如今,许多搜索引擎和公司正在使用语义搜索来提高搜索结果的准确性和相关性。其中包括于 2012 年推出知识图谱的谷歌,以及使用语义搜索为其 Alexa 虚拟助手提供支持的亚马逊。随着人工智能领域的不断发展,语义搜索可能会变得更加复杂且适用于广泛的应用。
语义搜索的最新改进
语义搜索的最新改进有助于进一步推动该领域的发展。一些最值得注意的包括:
基于 Transformer 的模型:基于 Transformer 的模型,例如 BERT(来自 Transformers 的双向编码器表示),彻底改变了自然语言处理和语义搜索。这些模型能够更好地理解单词和短语的上下文,从而更容易提供更相关的搜索结果。
多模态搜索:多模态搜索是指跨文本、图像、视频等多种模式搜索信息的能力。机器学习的最新进展使得开发更准确、更复杂的多模态搜索算法成为可能。
对话式搜索:对话式搜索涉及使用自然语言处理和机器学习来为用户查询提供更准确、更人性化的响应。这项技术已经被用于虚拟助手,例如亚马逊的 Alexa 和苹果的 Siri。
个性化:个性化是指根据用户的偏好和之前的搜索历史来定制搜索结果的能力。随着在线可用数据量的不断增长,这一点变得越来越重要。
特定领域搜索:特定领域搜索涉及使用语义搜索技术在特定领域或行业(例如医疗保健或金融)内进行搜索。这有助于为这些行业的用户提供更准确、更相关的搜索结果。
总体而言,语义搜索的最新进展使得在线查找信息变得更加容易,并为未来更复杂的搜索算法铺平了道路。
语义搜索和知识图谱有什么关系?
语义搜索和知识图(knowledge graph)密切相关,因为两者都涉及使用语义技术来改进搜索结果。
知识图是一种用于组织和表示知识的图形结构,通过节点和边的连接展示实体和关系之间的语义关联性。例如,知识图可能包含有关特定公司的信息,包括其位置、产品和员工以及这些实体之间的关系。
另一方面,语义搜索是一种使用自然语言处理和机器学习来更好地理解搜索查询中单词和短语的含义的搜索技术。语义搜索算法使用知识图和其他语义技术来分析实体和概念之间的关系,并基于此分析提供更相关的搜索结果。
换句话说,知识图谱为语义搜索提供了丰富的知识背景,帮助理解查询意图和提供准确的搜索结果。同时,语义搜索可以帮助构建和扩展知识图谱,提高搜索的准确性和语义理解能力。
例如,谷歌的知识图使用庞大的结构化数据数据库来支持其搜索结果,并提供有关搜索结果中出现的实体(例如人物、地点和事物)的附加信息。这使得用户更容易找到他们正在寻找的信息并探索相关的概念和实体。
向量数据库、知识图谱和语义搜索
向量数据库是另一种可以与语义搜索和知识图相结合使用以改进搜索结果的技术。它主要用于处理和分析具有向量特征的数据,如图像、音频、文本、时间序列等。
传统的关系型数据库主要用于存储结构化的数据,而向量数据库则专注于存储和处理高维向量。它的设计目标是能够高效地进行向量相似性搜索和聚类等操作,以支持复杂的数据分析和机器学习任务。向量数据库使用机器学习算法将数据表示为向量,向量是数据的数学表示,可用于各种计算任务,例如,向量可用于表示人、地点和事物等实体以及它们之间的关系。通过比较这些向量,搜索算法可以识别数据本身可能无法立即显现的关系和模式。
在语义搜索和知识图的背景下,向量数据库可以通过更好地理解实体和概念之间的关系来提高搜索结果的准确性。
例如,当用户搜索“ London ”时,语义搜索算法可以使用知识图和向量数据库来了解用户可能指的是英国伦敦市,而不是其他同名实体。
通过使用向量数据库来表示和比较实体和概念,搜索算法可以提供更相关和更准确的搜索结果。
总体而言,向量数据库、语义搜索和知识图谱都是共同提高搜索算法的准确性和效率的技术。通过利用这些技术,搜索引擎和其他应用程序可以更好地理解实体和概念之间的关系,从而更轻松地找到用户正在寻找的信息。
关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
官网文档:<https://infinilabs.com/docs/latest/easysearch>
参考资料
- [给 ES 插上向量检索的翅膀](https://infinilabs.com/blog/20 ... ector/)
【INFINI 动手实战训练营-北京站】海量数据不再头疼,使用 Easysearch 来实现降本增效,硬件直接减半
liaosy 发表了文章 • 0 个评论 • 3310 次浏览 • 2024-01-16 00:44
您是否遇到过以下问题?
- 当前部分原始日志压缩归档存放到 HDFS,但不能直接灵活查询;
- 使用 Elasticsearch 存储日志,开销较大,硬件资源投入较高;
- 当前日志集群不断增长,存储接近 PB 量级,且还在不断接入新的数据;
- 希望降低日志保留成本,同时满足按需查询的需求,平衡性能和成本;
- 集群规模大,分片过多,管理存在挑战,希望降低维护成本等。
针对使用 Elasticsearch 来作为日志存储的以上痛点,INFINI Labs 推出的 Easysearch 提供了若干存储优化的解决方案:
- 优化措施一:集成高效压缩算法
Easysearch 采用业界最先进的 Zstd 压缩算法,高压缩率,低 CPU 消耗,针对 Doc Values、Store 字段进行高度无缝压缩,不影响正常的使用体验,可以降低 50% 的存储开销。 - 优化措施二:无缝去除 Source 字段
Easysearch 利用 DocValues 和 BKD Tree 来重建 Source,合并冗余存储,不影响日志的正常检索和查看,可以大幅降低存储需求,在一些指标场景,甚至可以降低 80% 的存储开销。 - 优化措施三:归档数据直接检索
您是否还在通过关闭索引来降低海量数据带来的集群压力,或者您是否已经将快照备份直接放到 S3 或者 HDFS 中了,现在通过 Easysearch 提供的归档数据的直接检索能力,可以进一步释放本地节点的磁盘空间,进而释放物理机器资源,并根据需要按需查询归档索引,而不需要恢复归档再查询,简单方便。
通过以上优化举措,我们可以用不到一半的机器即可承载原有的数据,并且结合 Easysearch 内置其它的内核优化,索引和查询性能也将大幅提升,同时集群更加稳定可靠。
快来与 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。活动免费,欢迎报名参加。
活动时间:2024 年 1 月 18 日 13:30~17:30
活动地点:北京市海淀区 Wework 辉煌时代大厦 3 楼 3E 会议室
分享议题
- Easysearch 总体介绍及搭建实战
- Easysearch 存储优化原理与实践
- Elasticsearch -> Easysearch 在线迁移实操
- Console、Gateway、Loadgen 及 INFINI Labs 其他工具介绍与使用
参会提示
- 请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机)
- 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console)
- 下载地址:[https://www.infinilabs.com/download](https://www.infinilabs.com/download)
- 如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系

活动报名
名额有限,对 Easysearch 搜索引擎感兴趣的朋友们速度报名(扫描海报中二维码或点击此处 [链接](https://www.huodongxing.com/event/6733634533000) 即可免费报名)。
开启安全功能 ES 集群就安全了吗?
yangmf2040 发表了文章 • 0 个评论 • 4210 次浏览 • 2023-12-27 10:38
背景
经常跟 ES 打交道的朋友都知道,现在主流的 ES 集群安全方案是:RBAC + TLS for Internal + HTTPS 。

作为终端用户一般只需要关心用户名和密码就行了。作为管理和运维 ES 的人员来说,可能希望 ES 能提供密码策略来强制密码强度和密码使用周期。遗憾的是 ES 对密码强度和密码使用周期没有任何强制要求。如果不注意,可能我们天天都在使用“弱密码”或从不修改的密码(直到无法登录)。而且 ES 对连续的认证失败,不会做任何处理,这让 ES 很容易遭受暴力破解的入侵。
那还有没有别的办法,进一步提高安全呢? 其实,网关可以来帮忙。
虽然网关无法强制提高密码复杂度,但可以提高 ES 集群被暴力破解的难度。
大家都知道,暴力破解--本质就是不停的“猜”你的密码。以现在的 CPU 算力,一秒钟“猜”个几千上万次不过是洒洒水,而且 CPU 监控都不带波动的,很难发现异常。从这里入手,一方面,网关可以延长认证失败的过程--延迟返回结果,让破解不再暴力。另一方面,网关可以记录认证失败的情况,做到实时监控,有条件的告警。一旦出现苗头,可以使用网关阻断该 IP 或用户发来的任何请求。
场景模拟
首先,用网关代理 ES 集群,并在 default_flow 中增加一段 [response_status_filter](https://www.infinilabs.com/doc ... ilter/) 过滤器配置,对返回码是 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
- 401
- elasticsearch:
- name: rate_limit_flow
filter:
- sleep:
sleep_in_million_seconds: 5000
```

其次,对于失败的认证,我们可以通过 Console 来做个看板实时分析,展示。
折线图、饼图图、柱状图等,多种展示方式,大家可充分发挥。
最后,可在 Console 的告警中心,配置对应的告警规则,实时监控该类事件,方便及时跟进处置。
效果测试
先带上正确的用户名密码测试,看看返回速度。
.png)
0.011 秒返回。再使用错误的密码测试。
.png)
整整 5 秒多后,才回返结果。如果要暴力破解,每 5 秒钟甚至更久才尝试一个密码,这还叫暴力吗?
看板示例
此处仅仅是抛砖引玉,欢迎大家发挥想象。
.png)
告警示例
建立告警规则,用户 1 分钟内超过 3 次登录失败,就产生告警。
.png)
可在告警中心查看详情,也可将告警推送至微信、钉钉、飞书、邮件等。
.png)
查看告警详情,是 es 用户触发了告警。
.png)
最后,剩下的工作就是对该账号的处置了。如果有需要可以考虑阻止该用户或 IP 的请求,对应的过滤器文档在[这里](https://www.infinilabs.com/doc ... ilter/),老规矩加到 default_flow 里就行了。
如果小伙伴有其他办法提升 ES 集群安全,欢迎和我们一起讨论、交流。我们的宗旨是:让搜索更简单!
- sleep: