行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。
搜索引擎

搜索引擎

回顾DTC2024大会——聚焦数据技术创新:极限科技创始人曾勇揭秘下一代纯实时搜索引擎 INFINI Pizza

资讯动态liaosy 发表了文章 • 0 个评论 • 2895 次浏览 • 2024-04-13 21:54 • 来自相关话题

20240412-摩天轮数据库大会_副本.png

2024年4月12日至13日,备受瞩目的第十三届“数据技术嘉年华”(DTC2024)在北京新云南皇冠假日酒店盛大开幕。本次大会由中国DBA联盟(ACDU)与墨天轮社区联合主办,以“智能·云原生·一体化——DB与AI协同创新,模型与架构融合发展”为主题,旨在推动数据技术的创新与发展,为从业者带来一场知识与技术的盛宴。

在为期两天的活动中,来自业界的80余位杰出技术领袖、学术精英、行业实践者以及生态布道者齐聚一堂,共同探讨数据技术的最新趋势、前沿应用与创新实践。与会者们分享了他们对于智能云原生和一体化发展的深刻见解,以及DB与AI如何协同创新,推动模型与架构的融合发展。

图片1.png

大会现场,极限科技创始人曾勇带来了令人瞩目的演讲,他详细介绍了下一代纯实时搜索引擎 INFINI Pizza。曾勇表示,随着大数据时代的到来,数据的实时处理与搜索成为了行业发展的重要方向。而 INFINI Pizza 正是为了满足这一需求而诞生的创新产品,它采用了先进的设计理念和架构实现,通过自有专利解决海量数据无限伸缩的需求,利用最新的算法和数据结构来充分释放现代硬件的威力,能够实现高效、准确的实时数据搜索能力,满足核心业务场景高并发低延迟的需求,为企业提供可靠稳定的实时搜索基础底座。

图片2.png

部分演讲内容

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

完整演讲内容请查看 PPT

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

联系我们

2024 DTC 数据技术嘉年华 | 我们在现场等你

资讯动态searchkit 发表了文章 • 0 个评论 • 3567 次浏览 • 2024-04-03 18:42 • 来自相关话题

导语

龙腾四海内,风云际会时。2024年4月12日至13日,北京新云南皇冠假日酒店将迎来一场盛会《第十三届数据技术嘉年华》。这是由墨天轮数据社区和中国数据库联盟(ACDU)携手主办的精彩盛事。本次嘉年华的主题是“智能·云原生·一体化——DB 与 AI 协同创新,模型与架构融合发展”将为您揭示数据技术的未来趋势。80余位行业领袖、技术精英、实践者和生态布道者将汇聚一堂,带来一场思想碰撞的盛宴。

极限科技(INFINI Labs)创始人 & CEO,Elasticsearch 中文社区(现搜索客)发起人兼社区主席曾勇先生应邀出席参加第十三届数据技术嘉年华盛会,并将于 4 月 13 日下午 15:00 在 NoSQL 数据库专题论坛上发表演讲,演讲主题:《下一代纯实时搜索引擎 Pizza》,为大家介绍当前最新搜索型数据库的行业发展趋势、前沿的技术方案、如何解决海量数据下的高并发低延迟实时检索需求等干货内容。

欢迎大家报名参会,共同探讨与交流。我在 DTC 现场等你!购票时输入优惠码(ZENGY)即可免费参会,数量有限,先到先得~

WechatIMG38.jpg

极限科技一直致力于推动数据技术的边界,不断突破创新。我们相信,通过与业内的顶级专家和领导者们的深入交流与合作,我们能够共同开创数据技术的美好未来。这场嘉年华将为我们提供一个珍贵的机会,与业界精英们面对面交流,共同探索数据技术的前沿领域。

大会议程

WechatIMG17.jpg

除了技术盛宴外,本次大会还为参会者准备了丰厚的大奖,其中主论坛的奖品更是高达上万元。此外,参会者们还可以前往各个厂商展台,领略产品魅力并感受最新最前沿的数据技术,完成集章任务后更有机会抽取千元大奖,相信一定能给您带来意想不到的惊喜!点击“查看原文”了解更多活动信息吧!

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

探索搜索引擎的新时代:Windows 安装 Easysearch 完全指南

EasysearchMuses 发表了文章 • 0 个评论 • 1263 次浏览 • 2024-03-19 21:07 • 来自相关话题

相信最近大家都已经听过Easysearch的名头,成功拿下了墨天轮搜索型数据库的榜首!什么?您不知道?那我再给您介绍下: INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。 相信看完了上面您已经对使用Easysearch有了想法,不要想,行动!我将带领您在windows环境中使用Easysearch,有几种安装方法可供选择!

方法一:使用Docker

对于已在Windows系统上安装了Docker的用户来说,通过Docker安装Easysearch是最直接高效的方法。接下来我将介绍Docker部署Easysearch的方法,如果没有安装Docker请跳过!

Docker 环境下使用 Easysearch

在使用 Docker 运行 Easysearch 之前,请确保已进行系统调优并安装好Docker服务,且Docker服务正常运行。

最快方式:启动临时的docker容器,可以从前台查看到admin的初始密码

```bash
docker run --name easysearch -p 9200:9200 dockerproxy.com/infinilabs/easysearch:latest

个性配置

从宿主机挂载数据目录及日志目录,并配置jvm内存为512m。

  1. 在宿主机上创建目录

    bashCopy code
    sudo mkdir -p /data/easysearch/{data,logs}
  2. 修改目录权限

    bashCopy code
    # 容器内es用户的uid为602,通过调整宿主机的目录权限,确保在容器内部es用户有权限读写挂载的数据卷
    sudo chown -R 602.602 /data/easysearch
  3. 后台运行容器

    bashCopy code
    docker run -d --restart always -p 9200:9200 \
              -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
              -v /data/easysearch/data:/app/easysearch/data \
              -v /data/easysearch/logs:/app/easysearch/logs \
              --name easysearch --hostname easysearch \
              dockerproxy.com/infinilabs/easysearch:latest
  4. 查看初始密码

    bashCopy code
    # 由于以上容器是后台启动,需要通过日志找出admin的初始密码
    docker logs easysearch 2>/dev/null | grep -w Usage

    容器启停

  5. 启动容器

    bashCopy code
    docker start easysearch
  6. 停止容器

    bashCopy code
    docker stop easysearch

    后续验证工作,请继续查看安装指南。

    方法二:不使用HTTPS安装Easysearch

    在某些情况下,您可能需要或者偏好不通过HTTPS方式进行安装。这种方法需要您手动下载并设置Easysearch及其依赖。

    步骤1:下载并安装Easysearch

    首先,手动下载 Easysearch 并将其解压到您希望的安装目录。

    步骤2:下载并安装JDK

  7. 手动下载JDK安装包。
  8. 将JDK解压到Easysearch安装目录下。
  9. 将解压出来的JDK目录重命名为jdk

    步骤3:修改Easysearch配置

    鉴于Windows默认不包含openssl,生成证书可能较为困难。您可以通过修改config/easysearch.yml文件来绕过证书验证:

    security.enabled: false

    方法三:通过git-for-windows安装

    对于喜欢使用命令行的用户,可以通过安装git-for-windows,利用bash环境来执行安装命令。

    步骤1:安装Easysearch

    通过以下在线脚本命令安装Easysearch:

    bashCopy code
    curl -sSL http://get.infini.cloud | bash -s -- -p easysearch -d /d/opt/easysearch

    步骤2:下载并安装JDK

  10. 使用curl命令将JDK下载到指定目录:

    bashCopy code
    curl -# https://release.infinilabs.com/easysearch/jdk/zulu17.42.19-ca-jdk17.0.7-win_x64.zip -o /d/opt/jdk.zip
  11. 解压JDK文件,并将解压后的目录重命名为jdk
    bashCopy code
    cd /d/opt/easysearch && unzip -q /d/opt/jdk.zip
    mv zulu* jdk

    步骤3:设置JAVA_HOME环境变量

    配置JAVA_HOME环境变量,以确保Easysearch能正确找到JDK。

    bashCopy code
    export JAVA_HOME=/d/opt/easysearch/jdk

    步骤4:初始化证书、密码和插件

    执行以下命令,初始化所需的配置:

    bashCopy code
    bin/initialize.sh

    步骤5:运行Easysearch

    最后,使用以下命令启动Easysearch:

    bashCopy code
    bin/easysearch.bat

    通过以上任一方法,您都应该能够成功在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来进行集群管理,功能更加强大和方便。 注:各类客户端及周边工具,如 Logstash、Filebeat 请使用7.10.2 oss版本来连接Easysearch。并打开config/easysearch.yml中的配置项elasticsearch.api_compatibility: true

如果你已经按照上面的步骤完成了安装,那么接下来请尽情的使用Easysearch吧!如果在安装过程中出现了问题的请私聊我!对了,希望在其他环境中部署Easysearch的也可以查询我们的安装指南,上面有详细的安装步骤!祝你好运!

INFINI Labs 产品更新 | Easysearch 1.7.1发布,改进跨集群复制的数据加载等

Easysearchliaosy 发表了文章 • 0 个评论 • 1635 次浏览 • 2024-03-04 15:25 • 来自相关话题

release

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。

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

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

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

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

联系我们

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能

资讯动态liaosy 发表了文章 • 0 个评论 • 1491 次浏览 • 2023-07-21 17:28 • 来自相关话题

INFINI Labs 产品又更新啦~,本次更新概要如下:Easysearch 新增了分词插件、优化了生命周期管理功能等;Gateway 新增 smtp 过滤器来支持邮件的发送,支持自动跳过因为异常关闭而损坏的磁盘队列文件等;Console 新增熔断器监控指标、新增矩形树图(Treemap)、优化了探针 Agent 指标采集和集群自动关联操作等。欢迎大家下载体验。

INFINI Easysearch v1.4.0

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。

Easysearch 本次更新如下:

Features

  • 索引生命周期管理增加 wait_for_snapshot 操作,在删除索引之前,等待执行指定的快照管理策略,这样可以确保已删除索引的快照可用
  • 增加 analysis-hanlp 分词插件
  • 增加 jieba 分词插件

Bug fix

  • 修复启用 index.source_reuse 时,对复杂多层 json 的 source 字段 解析不正确的 Bug

Improvements

  • 更新索引生命周期管理 api 文档,增加策略应用和更新说明,增加 wait_for_snapshot 说明
  • 执行 initialize.sh 命令时增加初始化确认提示,是否将 admin 密码记录日志

INFINI Gateway v1.17.0

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

Gateway 本次更新如下:

Features

  • 新增 consumer Processor 来标准化订阅消息队列
  • 新增 smtp 过滤器来支持邮件的发送

Bug fix

  • 支持自动跳过因为异常关闭而损坏的磁盘队列文件

INFINI Console v1.4.0

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

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

Console 本次更新如下:

Features

  • 新增熔断器监控指标
  • 网关队列管理支持多选删除消费者
  • 数据看板新增组件矩形树图

Bug fix

  • 修复开发工具智能提示兼容性问题
  • 修复探针列表状态显示异常的问题
  • 修复探针列表分页不生效的问题
  • 修复数据看板 统计函数显示不对的问题
  • 修复探针下发采集指标配置重复的问题
  • 修复数据看板设置过滤条件不生效的问题
  • 修复主机列表探针状态不对的问题
  • 修复网关管理删除队列不成功的问题
  • 修复数据探索当前集群没索引时跳转的问题
  • 修复数据看板编辑状态下点击事件的问题

Improvements

  • 探针进程关联支持通过选择集群自动关联,简化操作
  • 探针列表支持排序
  • 探针支持向上滚动查看节点日志
  • 采集监控指标添加 cluster_uuid 信息
  • 数据看板支持配置指标排序

INFINI Agent v0.6.0

INFINI Agent 是 INFINI Console 的一个可选探针组件,负责采集和上传集群指标和日志等信息,并可通过 Console 管理。Agent 支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。

Agent 本次更新如下:

Features

  • 采集监控指标添加 cluster_uuid 信息

Improvements

  • 修复发现节点进程信息时获取不到最新集群配置的问题

期待反馈

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

或者通过 Discord 渠道加入聊天室:https://discord.com/invite/tnZ8S5vQ

欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群讨论,或者扫码加入我们的知识星球一起学习交流。

联系我们

关于极限科技(INFINI Labs)

关于极限科技

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

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

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

用极限网关实现ES容灾,简单!

Elasticsearchyangmf2040 发表了文章 • 0 个评论 • 2088 次浏览 • 2023-07-20 10:33 • 来自相关话题

身为 IT 人士,大伙身边的各种系统肯定不少吧。系统虽多,但最最最重要的那套、那几套,大伙肯定是捧在手心,关怀备至。如此重要的系统,万一发生故障了且短期无法恢复,该如何保障业务持续运行? 有过这方面思考或经验的同学,肯定脱口而出--切灾备啊。 是的,接下来我来介绍下我们的 ES 灾备方案。当然如果你有更好的,请使用各种可用的渠道联系我们。

总体设计

通过极限网关将应用对主集群的写操作,复制到灾备集群。应用发送的读请求则直接转发到主集群,并将响应结果转发给应用。应用对网关无感知,访问方式与访问 ES 集群一样。

方案优势

  • 轻量级

极限网关使用 Golang 编写,安装包很小,只有 10MB 左右,没有任何外部环境依赖,部署安装都非常简单,只需要下载对应平台的二进制可执行文件,启动网关程序的二进制程序文件执行即可。

  • 跨版本支持

极限网关针对不同的 Elasticsearch 版本做了兼容和针对性处理,能够让业务代码无缝的进行适配,后端 Elasticsearch 集群版本升级能够做到无缝过渡,降低版本升级和数据迁移的复杂度。

  • 高可用

极限网关内置多种高可用解决方案,前端请求入口支持基于虚拟 IP 的双机热备,后端集群支持集群拓扑的自动感知,节点上下线能自动发现,自动处理后端故障,自动进行请求的重试和迁移。

  • 灵活性

主备集群都是可读可写,切换迅速,只需切换网关到另一套配置即可。回切灵活,恢复使用原配置即可。

架构图

网关程序部署

下载

根据操作系统和平台选择下面相应的安装包: 解压到指定目录:

mkdir gateway
tar -zxf xxx.gz -C gateway

修改网关配置

在此 下载 网关配置,默认网关会加载配置文件 gateway.yml ,如果要指定其他配置文件使用 -config 选项指定。 网关配置文件内容较多,下面展示必要部分。

  #primary
  PRIMARY_ENDPOINT: http://192.168.56.3:7171
  PRIMARY_USERNAME: elastic
  PRIMARY_PASSWORD: password
  PRIMARY_MAX_QPS_PER_NODE: 10000
  PRIMARY_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  PRIMARY_MAX_CONNECTION_PER_NODE: 200
  PRIMARY_DISCOVERY_ENABLED: false
  PRIMARY_DISCOVERY_REFRESH_ENABLED: false
  #backup
  BACKUP_ENDPOINT: http://192.168.56.3:9200
  BACKUP_USERNAME: admin
  BACKUP_PASSWORD: admin
  BACKUP_MAX_QPS_PER_NODE: 10000
  BACKUP_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  BACKUP_MAX_CONNECTION_PER_NODE: 200
  BACKUP_DISCOVERY_ENABLED: false
  BACKUP_DISCOVERY_REFRESH_ENABLED: false

PRIMARY_ENDPOINT:配置主集群地址和端口
PRIMARY_USERNAME、PRIMARY_PASSWORD: 访问主集群的用户信息
BACKUP_ENDPOINT:配置备集群地址和端口
BACKUP_USERNAME、BACKUP_PASSWORD: 访问备集群的用户信息

运行网关

前台运行 直接运行网关程序即可启动极限网关了,如下:

./gateway-linux-amd64

后台运行

./gateway-linux-amd64 -service install
Success
./gateway-linux-amd64 -service start
Success

卸载服务

./gateway-linux-amd64 -service stop
Success
./gateway-linux-amd64 -service uninstall
Success

灾备功能测试

在灾备场景下,为保证数据一致性,对集群的访问操作都通过网关进行。注意只有 bulk API 的操作才会被复制到备集群。 在此次测试中,网关灾备配置功能为:

  • 主备集群正常时

读写请求正常执行; 写请求被记录到队列,备集群实时消费队列数据。

  • 当主集群故障时

写入请求报错,主备集群都不写入数据; 查询请求转到备集群执行,并返回结果给客户端。

  • 当备集群故障时

读写请求都正常执行; 写操作记录到磁盘队列,待备集群恢复后,自动消费队列数据直到两个集群一致。

主备集群正常时写入、查询测试

写入数据

# 通过网关写入数据
curl -X POST "localhost:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "create" : { "_index" : "test", "_id" : "2" } }
{ "field2" : "value2" }
'

查询数据

# 查询主集群
curl 192.168.56.3:7171/test/_search?pretty -uelastic:password

# 查询备集群
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

# 查询网关,网关转发给主集群执行
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

主备集群都已写入数据,且数据一致。通过网关查询,也正常返回。

删除和更新文档

# 通过网关删除和更新文档
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "delete" : { "_index" : "test", "_id" : "1" } }
{ "update" : {"_id" : "2", "_index" : "test"} }
{ "doc" : {"field2" : "value2-updated"} }
'

查询数据
# 查询主集群
curl 192.168.56.3:7171/test/_search?pretty -uelastic:password

# 查询备集群
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

两个集群都已执行删除和更新操作,数据一致。

主集群故障时写入、查询测试

为模拟主集群故障,直接关闭主集群。

写入数据

# 通过网关写入数据
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "3" } }
{ "field3" : "value3" }
{ "create" : { "_index" : "test", "_id" : "4" } }
{ "field4" : "value4" }
'

写入数据报错

查询数据

# 通过网关查询,因为主集群不可用,网关将查询转发到备集群执行
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

正常查询到数据,说明请求被转发到了备集群执行。

备集群故障时写入、查询测试

为模拟备集群故障,直接关闭备集群。

写入数据

# 通过网关写入数据
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "5" } }
{ "field5" : "value5" }
{ "create" : { "_index" : "test", "_id" : "6" } }
{ "field6" : "value6" }
'

数据正常写入。

查询数据

# 通过网关查询
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

查询成功返回。主集群成功写入了两条新数据。同时此数据会被记录到备集群的队列中,待备集群恢复后,会消费此队列追数据。

恢复备集群

启动备集群。

查询数据

等待片刻或通过 INFINI Console 确定网关队列消费完毕后,查询备集群的数据。 (生产和消费 offset 相同,说明消费完毕。)

# 查询备集群的数据
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

备集群启动后自动消费队列数据,消费完后备集群数据达到与主集群数据一致。

灾备切换

测试了这么多,终于到切换的时刻了。切换前我们判断下主系统是否短期无法修复。

如果我们判断主用系统无法短时间恢复,要执行切换。非常简单,我们直接将配置文件中定义的主备集群互换,然后重启网关程序就行了。但我们推荐在相同主机上另部署一套网关程序--网关B,先前那套用网关A指代。网关B中的配置文件把原备集群定义为主集群,原主集群定义为备集群。若要执行切换,我们先停止网关A,然后启动网关B,此时应用连接到网关(端口不变),就把原备系统当作主系统使用,把原主系统当作备系统,也就完成了主备系统的切换。

灾备回切

当原主集群修复后,正常启动,就会从消费队列追写修复期间产生数据直到主备数据一致,同样我们可通过 INFINI Console 查看消费的进度。如果大家还是担心数据的一致性,INFINI Console 还能帮大家做[校验数据]()任务,做到数据完全一致后(文档数量及文档内容一致),才进行回切。

回切也非常简单,停止网关B,启动网关A即可。

网关高可用

网关自带浮动 IP 模块,可进行双机热备。客户端通过 VIP 连接网关,网关出现故障时,VIP 漂移到备网关。 视频教程戳这里

这样的优点是简单,不足是只有一个网关在线提供服务。如果想多个网关在线提供服务,则需搭配分布式消息系统一起工作,架构如下。

前端通过负载均衡将流量分散到多个在线网关,网关将消息存入分布式消息系统。此时,网关可看作无状态应用,可根据需要扩缩规模。

以上就是我介绍的ES灾备方案,是不是相当灵活了。有问题还是那句话 Call me 。

关于极限网关

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

官网文档:https://www.infinilabs.com/docs/latest/gateway

给 ES 插上向量检索的翅膀 | DataFunSummit 2023 峰会演讲内容速达

Elasticsearchliaosy 发表了文章 • 0 个评论 • 1376 次浏览 • 2023-07-12 18:37 • 来自相关话题

近日,由 DataFun 主办的 DataFunSummit 2023 数据基础架构峰会 圆满落下帷幕,本次峰会邀请了腾讯、百度、字节、极限科技、Zilliz 等众多企业技术专家为大家带来分布式存储以及向量数据库的架构原理、性能优化与实践解析分享。

向量数据库架构与实践论坛 中,极限科技搜索引擎研发工程师张磊受邀出席做了《给 ES 插上向量检索的翅膀》的主题演讲。据介绍,本次演讲主要介绍了 Elasticsearch(ES)与向量技术的融合,展示其在不同行业中的应用场景和优势,同时也对 ES 与向量的技术细节进行详细讨论,并通过具体案例演示如何利用向量提升搜索能力。

讲师介绍

张磊,极限科技 Easysearch 引擎研发工程师,2013 年开始接触 Elasticsearch,10 余年搜索相关经验,之前主要做一些围绕 Elasticsearch 在日志检索和公安大数据相关业务的开发,对 Elasticsearch 和 Lucene 源码比较熟悉,目前专注于公司内部搜索产品的开发。

《给 ES 插上向量检索的翅膀》PPT 内容

更多 PPT 内容参见 https://elasticsearch.cn/slides/322

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。

官网文档:https://www.infinilabs.com/docs/latest/easysearch

下载地址:https://www.infinilabs.com/download

【INFINI Workshop 上海站】7 月 27 日一起动手实验玩转 Easysearch

资讯动态liaosy 发表了文章 • 1 个评论 • 1852 次浏览 • 2023-07-07 16:30 • 来自相关话题

【 INFINI Workshop 上海站】7 月 27 日下午 和 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。 活动时间:2023-07-27 13:30~17:30 活动地点:上海静安区武宁南路1号 WeWork 越商大厦 3 楼 3A 会议室 (注意:活动地址已更新,已报名小伙伴无需重新报名。) ​ 分享议题 • Easysearch 总体介绍及搭建实战 • 基于 INFINI Console 实现跨版本、跨引擎统一管控 • Elasticsearch -> Easysearch 在线迁移实操 参会提示请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机) • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console) • 下载地址:https://www.infinilabs.com/download 名额有限,对 ES 国产化感兴趣的朋友们速度报名(扫描海报中的二维码或者点击 链接 即可免费报名)。   如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系。
飞书20230719-130323.png

INFINI Easysearch 完成龙芯架构兼容性认证

Easysearchliaosy 发表了文章 • 0 个评论 • 1999 次浏览 • 2023-06-06 17:06 • 来自相关话题

近日,极限科技旗下软件产品 INFINI Easysearch 搜索引擎软件 V1.0 在龙芯中科的龙芯 3C5000L 平台上完成兼容性测试,功能与稳定性良好,并获得龙架构兼容互认证书。

龙芯是中国自主可控计算机处理器的代表品牌之一。龙芯处理器是由中国科学院计算技术研究所自主研发的一款高性能、低功耗、安全可靠的处理器。龙芯 3C5000L 是龙芯中科专门面向服务器领域的通用处理器。基于龙芯 3A5000 处理器,片上集成共 16 个高性能 LA464 处理器核,采用全新的龙芯自主指令系统(LoongArch®),在提高集成度的同时保持系统和软件与龙芯 3A5000 完全兼容。

极限科技研发的 INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。 同时也是一款具备自主可控的分布式近实时搜索型数据库产品,具备高性能、高可用、弹性伸缩、高安全性等特性,具备支持丰富的个性化搜索及聚合分析能力,可部署在物理机、虚拟机、容器、私有云和公有云,能承载 PB 级别的海量业务数据,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,可满足不同业务场景的各项复杂需求。

此次通过龙芯架构(LoongArch)的兼容性测试,有效验证了 Easysearch 对于国产化 CPU 的互操作性与可靠性。此外,Easysearch 也实现了对麒麟、统信、欧拉等国产操作系统的支持。未来,极限科技将继续加强与各大厂商的合作,深化对国产化软硬件技术栈的支持能力,为用户提供更加优质、稳定、高效、安全的搜索服务。

关于极限科技(INFINI Labs)

关于极限科技

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

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

详情参见官网:https://www.infinilabs.com

招聘搜索引擎内核研发工程师(Rust方向)

求职招聘medcl 发表了文章 • 0 个评论 • 5251 次浏览 • 2023-01-28 17:33 • 来自相关话题

Hello 大家好,开工大吉,兔年吉祥,站长来此招募小伙伴啦,加入我们一起打造下一代的实时搜索引擎。   岗位职责
  • 设计并开发下一代实时搜索引擎 ;
  • 持续优化实现方案,改进组件性能 ;
  • 保证工程质量和开发效率 。
  岗位要求
  • 3 年以上搜索引擎开发经验,计算机相关专业,本科及以上学历 ;
  • 熟练掌握 Rust/C/C++/Golang 中的一种或多种语言,有 Rust 实际开发经验者优先 ;
  • 熟悉 Linux 操作系统,了解Linux系统常用操作命令, 能基于shell编写脚本 ;
  • 熟悉 Linux 下内存管理机制,低延迟、高并发无锁化编程 ;
  • 熟悉 TCP/IP、Socket、HTTP 等网络协议 ;
  • 具有良好的沟通、团队协作能力;
  • 熟悉常见分布式算法,有大规模分布式系统开发经验优先;
  • 较好的英文阅读和写作能力,具备比较强的逻辑思维能力;
  • 良好的编码习惯和技术文档能力,具备持续输出的能力;
  • 工作地点不限 。
  加分项
  • 有自己的博客、Github、开源项目优先 ;
  • 具有相关搜索引擎开发工作经验者优先 ;
  • 熟悉各类索引结构;
  • 熟悉 LSM-Tree、B+Tree、RocksDB、LevelDB 优先 ;
  • 有较强的学习能力,愿意致力于新技术的研究 。
  更多信息请访问极限实验室官网: https://www.infinilabs.com/career/

社区日报 第504期 (2019-01-09)

社区日报elk123 发表了文章 • 0 个评论 • 3886 次浏览 • 2019-01-09 13:42 • 来自相关话题

1、基于elasticsearch站内搜索引擎实战; http://t.cn/EGr5gbR 2、基于elasticSearch的搜房网实战; http://t.cn/EGrtIi5 3、使用elasticsearch构建一个完整的搜索引擎。 http://t.cn/EGrc25K 编辑:wt 归档:https://elasticsearch.cn/article/6324 订阅:https://tinyletter.com/elastic-daily
1、基于elasticsearch站内搜索引擎实战; http://t.cn/EGr5gbR 2、基于elasticSearch的搜房网实战; http://t.cn/EGrtIi5 3、使用elasticsearch构建一个完整的搜索引擎。 http://t.cn/EGrc25K 编辑:wt 归档:https://elasticsearch.cn/article/6324 订阅:https://tinyletter.com/elastic-daily

Day22 - 熟练使用ES离做好搜索还差多远?

Adventnodexy 发表了文章 • 2 个评论 • 8448 次浏览 • 2018-12-21 17:27 • 来自相关话题

作者:杨振涛 搜索引擎架构师@vivo  首次发布:Elasticsearch中文社区 发布日期:2018-12-22

搜索引擎作为互联网发展历史中一个非常典型的产品/业务形态,时至今日并没有太大的突破性变化;主流形态可以划分为大搜、垂搜、企业级搜索和站内/app内搜索等。除了Google, Yahoo, Bing, Ask 等以及国内百度、搜狗、360、神马等是人们熟识的大搜之外,非业内人士还真不知道其他还有哪些公司以及有哪些搜索产品或业务场景。 实际上,在信息爆炸的时代,几乎每家有点儿规模的公司都或多或少要涉及到搜索引擎,最起码你需要接触SEO/SEM。本文将从非大搜企业的搜索需求出发,并基于开源技术栈来介绍和探讨搜索引擎在实践中的几个核心任务及其主要解决思路。同时为了避免重复,本文以外链形式引用了大量网络已有的国内外公开资料,方便大家参考,需要注意的是部分内容可能会随着时间推移而过期或链接失效。 提到开源搜索引擎,在Java技术栈里以Lucene, Solr/SolrCloud及Elasticsearch为代表的几个项目可能最为流行。本文的写作初衷是解答”熟练使用ES等开源搜索引擎解决方案以后,要如何才能做好搜索产品/业务?“ 希望对你有所帮助,如果你有关于此话题的更多实践经验或不同见解,欢迎留言评论交流。    1. 做好搜索引擎意味着什么?   有一位同行的文章总结了好的搜索引擎的衡量维度:
  • 相关性
  • 体验
  • 性能
其中相关性是非常重要的一个维度,这里我将通过引用一篇文章来介绍什么是”相关性工程“以及”相关性工程师“ http://www.flax.co.uk/blog/201 ... ound/ 。 相关性工程中的“相关性”,主要是指代用户的Query与索引库中的Doc之间的相关性,所以可以分别从索引数据和Query两个方面来考虑。 相关性工程考虑的第一个特征就是基于已有索引数据的文本相关度计算,通常有TF-IDF、BM25、BM25F等。Elasticsearch早期的版本默认都是TF-IDF,目前已更改为BM25。对于中文数据,分词方法和策略也会直接影响到文本相关度的计算;其次匹配方式也非常重要;最后就是基于此的相关性算分了。 相关性工程还可以考虑更多的特征,尤其是从索引数据之外来挖掘出的特征,比如索引文档的权威性、时效性、专业性、质量与口碑评分、热度与流行度等。结合NLP技术,相关性工程还可以考虑语义距离等特征,丰富召回结果。当然这些特征的处理与机器学习中的特征工程基本一致,比如涉及归一化问题、权重问题、稀疏性问题、非典型分布等等。 相关性工程考虑的另一个重要特征是用户点击反馈数据,即对于用户所看到的搜索结果列表,点击行为被看作是对当前搜索结果的一种认可,用户点了哪个位置的doc对于继续优化相关性至关重要。这两天有个著名案例就是Google的劈柴在听证会上解释为什么在Google搜索Idiot出现的都是特朗普的照片。 体验涉及的方面较多,最重要的就是产品功能和交互方面的体验了,比如一个典型的搜索产品,C端可能具备以下功能:
  • 搜索前:搜索框,搜索入口,热搜榜/飙升榜/大家都在搜,搜索发现,默认搜索词,历史搜索记录,猜你想搜,分类搜索,语音输入搜索/图片搜索; 广告位
  • 搜索中:搜索联想直达,搜索联想词,输入纠错,关键词匹配高亮
  • 搜索后:搜索结果列表,列表页推荐/广告,特形展示,列表穿插,搜了还搜,搜索详情页,详情页搜索推荐,无结果及少结果填充 ,筛选条件/筛选器,自主排序,列表样式切换(宫格 | 列表)
除了产品功能,还需要考虑搜索引擎的可运营性,比如搜索运营管理系统,至少要具备基本功能的各种黑白灰名单,包括人工干预,优化分词的自定义词典、同义词典、停用词典,以及对查询词的强制改写或者升降权;对索引内容的管控,比如对检索字段的;对召回和排序的相关参数的优化和调整等等;此外,还有配套的SEO或ASO系统,以及各种数据指标相关的看板系统。 而搜索结果中的特形展示,也是目前比较主流的产品形式,不管是自然结果还是搜索广告,都可以提供更快捷的体验,甚至一度成为知识图谱在搜索产品中应用的代表性功能。另外搜索联想中的直达服务,也是目前比较流行的,可以进一步缩短用户的操作路径,直达目标内容或服务。 更多关于产品体验和设计类问题可以参考  http://www.woshipm.com/tag/搜索功能  性能方面,搜索引擎的每一次查询理论上都是实时运算,大部分搜索引擎系统都是实时或准实时的,这就要求在用户感知上要有基本的响应时间(RT)保障,比如在国内公网环境下,200ms是比较优秀的体验,300ms-500ms是正常的体验,500ms+就需要尽快去优化。除去其中的网络I/O等开销,对于后端搜索服务的RT,一般是T99在100ms以内,T90在50ms以内,具体标准取决与当事业务和产品。除了RT,可用性也是非常重要的,一般要求99.9%以上;另外,索引数据的生效时间也很重要,比如新加入的索引,或者已有索引的更新和删除,秒级生效是比较好的体验。需要明确的一点是,这里的性能指标我们针对的是To C用户,如果是企业级搜索甚至是基于ES的一个即时查询分析系统,可能复杂查询的秒级响应也是很正常的。 延伸阅读: 阿里云-开放搜索-最佳实践-功能篇-相关性实践 https://help.aliyun.com/document_detail/29186.html  Defining relevance engineering 什么是相关性工程 http://www.flax.co.uk/blog/201 ... ound/    2. 搜索引擎是典型的机器学习问题   云计算、大数据、AI 先后成为IT与互联网行业的热点,三者经常被称为CBA或ABC技术,而这些都与一家公司密切相关,那就是 Google !   众所周知 Google 是一家著名的全球搜索引擎公司,但其产品远不止搜索引擎。从Google的三驾马车 GFS, MapReduce, BigTable开始,后来有了 Yahoo牵头的开源实现Hadoop(Hadoop最早来自于Nutch,是的,没错,就是那个开发了 Lucene 的 Doug Cutting所开源的Nutch,他被称作Hadoop之父),到后来的云计算与大数据技术蓬勃,到今天的AI热潮,各种深度学习各种NN, Google Brain,开源的Tensorflow,对Google来说这一切都是搜索引擎业务驱动的水到渠成的发展轨迹。 可以说搜索引擎是天生的机器学习问题,有着诸多的机器学习/深度学习应用场景。这里顺便DISS下一些眼高手低的迷糊党,互联网圈儿曾有人遇到求职者表示想做AI,却不做搜索不做推荐不做广告!(本人内心:你咋不上天呢!请记住AI is a buzzword. )当今的互联网或移动互联网,搜索、推荐与广告是三大典型的所谓AI应用落地方向,其他的也有但并未发展成熟,至少还没有成熟的变现模式;而这三者或多或少有些交集,搜索几乎是最基础的一个,比如推荐也需要建立索引,需要检索TOP N,搜索广告也需要做召回和排序。 如果我们把搜索引擎的核心模型简化下,其实主要是在解决三大类问题:  - 数据: 内容侧的爬虫,预处理,内容分析和理解,索引建立和存储 ;用户侧的Query理解,改写,意图识别等 - 算法/模型 :把相关性和排序等业务问题抽象为回归或分类/聚类问题,特征工程,离线训练模型,在线预测 - 策略:为满足业务需求而制定并持续优化的一系列规则、模型或模型组合、参数优化等活动,并通过工程化实现体现到线上系统,以及配套的试验和评估系统    2.1 Ranking  排序 常见的排序策略有:
  • 单维度排序:顾名思义按照单个维度来排序,没有任何复杂性可言,在召回结果集不太大的情况下实时排序即可。
  • 优先级排序:相对单维度排序而已一般是先按维度A排,当A的排序依据一样或相等时再按维度B排序,以此类推。
  • 加权排序   :针对多个维度或特征,赋予不同权重,并按求和之后的得分来排序;实践中通常会采用分层加权排序(第一层加权排序之后,得到不少于2个得分,继续加权后排序),或者分组加权排序(第一层分组来加权排序后,对所得到的得分可能按业务需求进行非求和类的运算比如乘法,再按最终得分排序)的策略。 加权排序的难点在于,如何设置并持续优化这些权重,通常会建模为典型的机器学习问题来拟合。
  • 机器学习排序 :即所谓LTR,根据用户点击或人工标注数据集建立学习目标,然后通过特征工程来挖掘与目标有关系的一系列特征,并建立学习模型,通过训练集获得模型参数,以该组参数为基准做预测,上线后再基于用户点击数据持续优化该模型的参数。LTR是一个通用方法的称谓,不是某一个具体算法的名称,具体算法名称参见下文。
排序问题可以简单抽象成为预测用户点击列表中对象的概率问题。   2.2 ES生态内的 LTR  关于LTR的理论和方法学,已经有很多论文和资料了 ( 参考 wikipedia LTR简介-微软亚研院, LTR Pairwise to Listwise ,  大规模LTR-GoogleLTR书籍 ),感兴趣的可以阅读,这里主要提供几个JAVA和ES生态的工程实现参考。 es-ltr插件  http://es-learn-to-rank.labs.o19s.com/  Set of command line tools for Learning To Rank https://github.com/SeaseLtd/ltr-tools es的ranking evaluation api https://www.elastic.co/guide/e ... .html  Java LTR类库: RankLib  https://sourceforge.net/p/lemur/wiki/RankLib/ 支持算法如下:
  • MART (Multiple Additive Regression Trees, a.k.a. Gradient boosted regression tree) 
  • RankNet 
  • RankBoost 
  • AdaRank 
  • Coordinate Ascent 
  • LambdaMART 
  • ListNet 
  • Random Forests  
延伸阅读:   2.3 典型垂搜 电商与O2O搜索 案例: 天猫,淘宝,京东,美丽说蘑菇街,有赞 ,美团点评,饿了么  阿里研究员徐盈辉:在线AI技术在搜索与推荐场景的应用 https://yq.aliyun.com/articles/107941   阿里巴巴资深算法专家三桐:人工智能在搜索中的应用 https://yq.aliyun.com/articles/288065   阿里巴巴年度技术总结 - 人工智能在搜索的应用和实践 http://www.sohu.com/a/214123235_680198  电子商务搜索系统架构参考 (京东) https://blog.csdn.net/hongseji ... 08067   电商搜索之动态属性值(特征值)聚合 (举例 京东和solr实现)  https://blog.csdn.net/hu948162 ... 80071   劈开迷雾,蘑菇街电商搜索架构及搜索排序实现 https://blog.csdn.net/huangshu ... 46694 有赞搜索引擎实践(工程篇)  https://www.cnblogs.com/hsydj/p/5303050.html 有赞搜索引擎实践(算法篇)  https://www.cnblogs.com/hsydj/p/5402945.html  有赞搜索系统的架构演进   https://tech.youzan.com/search-tech-1/    有赞搜索系统的技术内幕  https://tech.youzan.com/search-tech-2/   电商系统如何做搜索引擎? https://blog.csdn.net/zysgdhf4 ... 53999   电商检索系统总结——功能篇 https://www.cnblogs.com/wanghuaijun/p/7112952.html  App搜索  案例:Google Play, 应用宝,各种手机助手,Apple App Store及各大其他手机厂商的应用商店/应用市场以及互联网电视/机顶盒等的应用商店/应用市场     3. 搜索引擎的效果评价 我们在团队内有句戏言:看一个搜索团队是否专业,就看他们是否做效果评价。 在与国内外的搜索工程师交流和学习过程中,还有一个说法是:搜素引擎的优化就像一个打地鼠游戏,你解决一类bad case的同时很难确认其是否会带来新的bad case以及会带来多少。 需要区别的是,搜索引擎中使用到的机器学习/深度学习算法本身的效果评估(如分类算法的Accuracy、Precision、Recall、F1、ROC、AUC 等)并不能直接代替搜索引擎的效果评价。通常我们分为人工主观评测和业务指标评测。 参考:   4. NLP 自然语言处理 我们知道搜索引擎的上游学科是信息检索(IR),这也是搜索引擎的理论基础。而自然语言处理(NLP)在信息检索领域尤其是搜索引擎中有着至关重要的地位和作用。一方面我们对于被搜索的内容数据的理解,需要借助NLP来提升语义性和智能程度,另一方面我们对于用户Query和意图的理解,也需要借助NLP相关方法和技术来完成。 实际上ES的很多特性已经非常强大, 可以作为基本的文本分析和挖掘工具使用,这也是解释了ES官方博客以及其他博客有分享一些文章,主题是关于使用ES来进行文本分类或者实现推荐系统。 总结一下,想要做好一个典型的搜索引擎产品,除了熟练使用ES,还需要考虑搜索产品的功能完备性、体验优劣、性能以及相关性,而相关性涉及对内容数据的理解和挖掘、对用户Query的理解和意图识别,以及检索过程中的特征选取和权重优化、算分、排序,最后是比较重要的效果评价。这个过程中NLP的应用也非常多,除了基本的分词,还可能涉及非必留、词性识别、纠错、繁简体、多语言、文本向量化及语义距离计算等。 最后推荐一本搜索必读书籍—— 吴军的《数学之美》第二版 https://book.douban.com/subject/26163454/    第1 章 文字和语言 vs 数字和信息 第2 章 自然语言处理 — 从规则到统计 第3 章 统计语言模型 第4 章 谈谈分词 第5 章 隐含马尔可夫模型 第6 章 信息的度量和作用 第7 章 贾里尼克和现代语言处理 第8 章 简单之美 — 布尔代数和搜索引擎 第9 章 图论和网络爬虫 第10章 PageRank — Google的民主表决式网页排名技术 第11章 如何确定网页和查询的相关性 第12章 有限状态机和动态规划 — 地图与本地 第13章 Google AK-47 的设计者 — 阿米特· 辛格博士 第14章 余弦定理和新闻的分类 第15章 矩阵运算和文本处理中的两个分类问题 第16章 信息指纹及其应用 第17章 由电视剧《暗算》所想到的 — 谈谈密码学的数学原理 第18章 闪光的不一定是金子 — 谈谈搜索引擎 第19章 谈谈数学模型的重要性 第20章 不要把鸡蛋放到一个篮子里 — 谈谈最 第21章 拼音输入法的数学原理 第22章 自然语言处理的教父马库斯和他的优秀弟子们 第23章 布隆过滤器 第24章 马尔可夫链的扩展 — 贝叶斯网络 第25章 条件随机场、文法分析及其他 第26章 维特比和他的维特比算法 第27章 上帝的算法 — 期望最大化算法 第28章 逻辑回归和搜索广告 第29章 各个击破算法和Google 云计算的基础 第30章 Google 大脑和人工神经网络 第31章 大数据的威力——谈谈数据的重要性          

高薪聘请ES(elasticsearch)搜索研发工程师

求职招聘mao13868891931 发表了文章 • 2 个评论 • 5930 次浏览 • 2018-06-07 17:49 • 来自相关话题

微信:13868891931
微信:13868891931

【INFINI Workshop 上海站】7 月 27 日一起动手实验玩转 Easysearch

资讯动态liaosy 发表了文章 • 1 个评论 • 1852 次浏览 • 2023-07-07 16:30 • 来自相关话题

【 INFINI Workshop 上海站】7 月 27 日下午 和 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。 活动时间:2023-07-27 13:30~17:30 活动地点:上海静安区武宁南路1号 WeWork 越商大厦 3 楼 3A 会议室 (注意:活动地址已更新,已报名小伙伴无需重新报名。) ​ 分享议题 • Easysearch 总体介绍及搭建实战 • 基于 INFINI Console 实现跨版本、跨引擎统一管控 • Elasticsearch -> Easysearch 在线迁移实操 参会提示请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机) • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console) • 下载地址:https://www.infinilabs.com/download 名额有限,对 ES 国产化感兴趣的朋友们速度报名(扫描海报中的二维码或者点击 链接 即可免费报名)。   如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系。
飞书20230719-130323.png

招聘搜索引擎内核研发工程师(Rust方向)

求职招聘medcl 发表了文章 • 0 个评论 • 5251 次浏览 • 2023-01-28 17:33 • 来自相关话题

Hello 大家好,开工大吉,兔年吉祥,站长来此招募小伙伴啦,加入我们一起打造下一代的实时搜索引擎。   岗位职责
  • 设计并开发下一代实时搜索引擎 ;
  • 持续优化实现方案,改进组件性能 ;
  • 保证工程质量和开发效率 。
  岗位要求
  • 3 年以上搜索引擎开发经验,计算机相关专业,本科及以上学历 ;
  • 熟练掌握 Rust/C/C++/Golang 中的一种或多种语言,有 Rust 实际开发经验者优先 ;
  • 熟悉 Linux 操作系统,了解Linux系统常用操作命令, 能基于shell编写脚本 ;
  • 熟悉 Linux 下内存管理机制,低延迟、高并发无锁化编程 ;
  • 熟悉 TCP/IP、Socket、HTTP 等网络协议 ;
  • 具有良好的沟通、团队协作能力;
  • 熟悉常见分布式算法,有大规模分布式系统开发经验优先;
  • 较好的英文阅读和写作能力,具备比较强的逻辑思维能力;
  • 良好的编码习惯和技术文档能力,具备持续输出的能力;
  • 工作地点不限 。
  加分项
  • 有自己的博客、Github、开源项目优先 ;
  • 具有相关搜索引擎开发工作经验者优先 ;
  • 熟悉各类索引结构;
  • 熟悉 LSM-Tree、B+Tree、RocksDB、LevelDB 优先 ;
  • 有较强的学习能力,愿意致力于新技术的研究 。
  更多信息请访问极限实验室官网: https://www.infinilabs.com/career/

回顾DTC2024大会——聚焦数据技术创新:极限科技创始人曾勇揭秘下一代纯实时搜索引擎 INFINI Pizza

资讯动态liaosy 发表了文章 • 0 个评论 • 2895 次浏览 • 2024-04-13 21:54 • 来自相关话题

20240412-摩天轮数据库大会_副本.png

2024年4月12日至13日,备受瞩目的第十三届“数据技术嘉年华”(DTC2024)在北京新云南皇冠假日酒店盛大开幕。本次大会由中国DBA联盟(ACDU)与墨天轮社区联合主办,以“智能·云原生·一体化——DB与AI协同创新,模型与架构融合发展”为主题,旨在推动数据技术的创新与发展,为从业者带来一场知识与技术的盛宴。

在为期两天的活动中,来自业界的80余位杰出技术领袖、学术精英、行业实践者以及生态布道者齐聚一堂,共同探讨数据技术的最新趋势、前沿应用与创新实践。与会者们分享了他们对于智能云原生和一体化发展的深刻见解,以及DB与AI如何协同创新,推动模型与架构的融合发展。

图片1.png

大会现场,极限科技创始人曾勇带来了令人瞩目的演讲,他详细介绍了下一代纯实时搜索引擎 INFINI Pizza。曾勇表示,随着大数据时代的到来,数据的实时处理与搜索成为了行业发展的重要方向。而 INFINI Pizza 正是为了满足这一需求而诞生的创新产品,它采用了先进的设计理念和架构实现,通过自有专利解决海量数据无限伸缩的需求,利用最新的算法和数据结构来充分释放现代硬件的威力,能够实现高效、准确的实时数据搜索能力,满足核心业务场景高并发低延迟的需求,为企业提供可靠稳定的实时搜索基础底座。

图片2.png

部分演讲内容

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

完整演讲内容请查看 PPT

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

联系我们

2024 DTC 数据技术嘉年华 | 我们在现场等你

资讯动态searchkit 发表了文章 • 0 个评论 • 3567 次浏览 • 2024-04-03 18:42 • 来自相关话题

导语

龙腾四海内,风云际会时。2024年4月12日至13日,北京新云南皇冠假日酒店将迎来一场盛会《第十三届数据技术嘉年华》。这是由墨天轮数据社区和中国数据库联盟(ACDU)携手主办的精彩盛事。本次嘉年华的主题是“智能·云原生·一体化——DB 与 AI 协同创新,模型与架构融合发展”将为您揭示数据技术的未来趋势。80余位行业领袖、技术精英、实践者和生态布道者将汇聚一堂,带来一场思想碰撞的盛宴。

极限科技(INFINI Labs)创始人 & CEO,Elasticsearch 中文社区(现搜索客)发起人兼社区主席曾勇先生应邀出席参加第十三届数据技术嘉年华盛会,并将于 4 月 13 日下午 15:00 在 NoSQL 数据库专题论坛上发表演讲,演讲主题:《下一代纯实时搜索引擎 Pizza》,为大家介绍当前最新搜索型数据库的行业发展趋势、前沿的技术方案、如何解决海量数据下的高并发低延迟实时检索需求等干货内容。

欢迎大家报名参会,共同探讨与交流。我在 DTC 现场等你!购票时输入优惠码(ZENGY)即可免费参会,数量有限,先到先得~

WechatIMG38.jpg

极限科技一直致力于推动数据技术的边界,不断突破创新。我们相信,通过与业内的顶级专家和领导者们的深入交流与合作,我们能够共同开创数据技术的美好未来。这场嘉年华将为我们提供一个珍贵的机会,与业界精英们面对面交流,共同探索数据技术的前沿领域。

大会议程

WechatIMG17.jpg

除了技术盛宴外,本次大会还为参会者准备了丰厚的大奖,其中主论坛的奖品更是高达上万元。此外,参会者们还可以前往各个厂商展台,领略产品魅力并感受最新最前沿的数据技术,完成集章任务后更有机会抽取千元大奖,相信一定能给您带来意想不到的惊喜!点击“查看原文”了解更多活动信息吧!

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

探索搜索引擎的新时代:Windows 安装 Easysearch 完全指南

EasysearchMuses 发表了文章 • 0 个评论 • 1263 次浏览 • 2024-03-19 21:07 • 来自相关话题

相信最近大家都已经听过Easysearch的名头,成功拿下了墨天轮搜索型数据库的榜首!什么?您不知道?那我再给您介绍下: INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。 相信看完了上面您已经对使用Easysearch有了想法,不要想,行动!我将带领您在windows环境中使用Easysearch,有几种安装方法可供选择!

方法一:使用Docker

对于已在Windows系统上安装了Docker的用户来说,通过Docker安装Easysearch是最直接高效的方法。接下来我将介绍Docker部署Easysearch的方法,如果没有安装Docker请跳过!

Docker 环境下使用 Easysearch

在使用 Docker 运行 Easysearch 之前,请确保已进行系统调优并安装好Docker服务,且Docker服务正常运行。

最快方式:启动临时的docker容器,可以从前台查看到admin的初始密码

```bash
docker run --name easysearch -p 9200:9200 dockerproxy.com/infinilabs/easysearch:latest

个性配置

从宿主机挂载数据目录及日志目录,并配置jvm内存为512m。

  1. 在宿主机上创建目录

    bashCopy code
    sudo mkdir -p /data/easysearch/{data,logs}
  2. 修改目录权限

    bashCopy code
    # 容器内es用户的uid为602,通过调整宿主机的目录权限,确保在容器内部es用户有权限读写挂载的数据卷
    sudo chown -R 602.602 /data/easysearch
  3. 后台运行容器

    bashCopy code
    docker run -d --restart always -p 9200:9200 \
              -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
              -v /data/easysearch/data:/app/easysearch/data \
              -v /data/easysearch/logs:/app/easysearch/logs \
              --name easysearch --hostname easysearch \
              dockerproxy.com/infinilabs/easysearch:latest
  4. 查看初始密码

    bashCopy code
    # 由于以上容器是后台启动,需要通过日志找出admin的初始密码
    docker logs easysearch 2>/dev/null | grep -w Usage

    容器启停

  5. 启动容器

    bashCopy code
    docker start easysearch
  6. 停止容器

    bashCopy code
    docker stop easysearch

    后续验证工作,请继续查看安装指南。

    方法二:不使用HTTPS安装Easysearch

    在某些情况下,您可能需要或者偏好不通过HTTPS方式进行安装。这种方法需要您手动下载并设置Easysearch及其依赖。

    步骤1:下载并安装Easysearch

    首先,手动下载 Easysearch 并将其解压到您希望的安装目录。

    步骤2:下载并安装JDK

  7. 手动下载JDK安装包。
  8. 将JDK解压到Easysearch安装目录下。
  9. 将解压出来的JDK目录重命名为jdk

    步骤3:修改Easysearch配置

    鉴于Windows默认不包含openssl,生成证书可能较为困难。您可以通过修改config/easysearch.yml文件来绕过证书验证:

    security.enabled: false

    方法三:通过git-for-windows安装

    对于喜欢使用命令行的用户,可以通过安装git-for-windows,利用bash环境来执行安装命令。

    步骤1:安装Easysearch

    通过以下在线脚本命令安装Easysearch:

    bashCopy code
    curl -sSL http://get.infini.cloud | bash -s -- -p easysearch -d /d/opt/easysearch

    步骤2:下载并安装JDK

  10. 使用curl命令将JDK下载到指定目录:

    bashCopy code
    curl -# https://release.infinilabs.com/easysearch/jdk/zulu17.42.19-ca-jdk17.0.7-win_x64.zip -o /d/opt/jdk.zip
  11. 解压JDK文件,并将解压后的目录重命名为jdk
    bashCopy code
    cd /d/opt/easysearch && unzip -q /d/opt/jdk.zip
    mv zulu* jdk

    步骤3:设置JAVA_HOME环境变量

    配置JAVA_HOME环境变量,以确保Easysearch能正确找到JDK。

    bashCopy code
    export JAVA_HOME=/d/opt/easysearch/jdk

    步骤4:初始化证书、密码和插件

    执行以下命令,初始化所需的配置:

    bashCopy code
    bin/initialize.sh

    步骤5:运行Easysearch

    最后,使用以下命令启动Easysearch:

    bashCopy code
    bin/easysearch.bat

    通过以上任一方法,您都应该能够成功在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来进行集群管理,功能更加强大和方便。 注:各类客户端及周边工具,如 Logstash、Filebeat 请使用7.10.2 oss版本来连接Easysearch。并打开config/easysearch.yml中的配置项elasticsearch.api_compatibility: true

如果你已经按照上面的步骤完成了安装,那么接下来请尽情的使用Easysearch吧!如果在安装过程中出现了问题的请私聊我!对了,希望在其他环境中部署Easysearch的也可以查询我们的安装指南,上面有详细的安装步骤!祝你好运!

INFINI Labs 产品更新 | Easysearch 1.7.1发布,改进跨集群复制的数据加载等

Easysearchliaosy 发表了文章 • 0 个评论 • 1635 次浏览 • 2024-03-04 15:25 • 来自相关话题

release

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。

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

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

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

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

联系我们

关于极限科技(INFINI Labs)

INFINI Labs

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

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

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

INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能

资讯动态liaosy 发表了文章 • 0 个评论 • 1491 次浏览 • 2023-07-21 17:28 • 来自相关话题

INFINI Labs 产品又更新啦~,本次更新概要如下:Easysearch 新增了分词插件、优化了生命周期管理功能等;Gateway 新增 smtp 过滤器来支持邮件的发送,支持自动跳过因为异常关闭而损坏的磁盘队列文件等;Console 新增熔断器监控指标、新增矩形树图(Treemap)、优化了探针 Agent 指标采集和集群自动关联操作等。欢迎大家下载体验。

INFINI Easysearch v1.4.0

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。

Easysearch 本次更新如下:

Features

  • 索引生命周期管理增加 wait_for_snapshot 操作,在删除索引之前,等待执行指定的快照管理策略,这样可以确保已删除索引的快照可用
  • 增加 analysis-hanlp 分词插件
  • 增加 jieba 分词插件

Bug fix

  • 修复启用 index.source_reuse 时,对复杂多层 json 的 source 字段 解析不正确的 Bug

Improvements

  • 更新索引生命周期管理 api 文档,增加策略应用和更新说明,增加 wait_for_snapshot 说明
  • 执行 initialize.sh 命令时增加初始化确认提示,是否将 admin 密码记录日志

INFINI Gateway v1.17.0

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

Gateway 本次更新如下:

Features

  • 新增 consumer Processor 来标准化订阅消息队列
  • 新增 smtp 过滤器来支持邮件的发送

Bug fix

  • 支持自动跳过因为异常关闭而损坏的磁盘队列文件

INFINI Console v1.4.0

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

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

Console 本次更新如下:

Features

  • 新增熔断器监控指标
  • 网关队列管理支持多选删除消费者
  • 数据看板新增组件矩形树图

Bug fix

  • 修复开发工具智能提示兼容性问题
  • 修复探针列表状态显示异常的问题
  • 修复探针列表分页不生效的问题
  • 修复数据看板 统计函数显示不对的问题
  • 修复探针下发采集指标配置重复的问题
  • 修复数据看板设置过滤条件不生效的问题
  • 修复主机列表探针状态不对的问题
  • 修复网关管理删除队列不成功的问题
  • 修复数据探索当前集群没索引时跳转的问题
  • 修复数据看板编辑状态下点击事件的问题

Improvements

  • 探针进程关联支持通过选择集群自动关联,简化操作
  • 探针列表支持排序
  • 探针支持向上滚动查看节点日志
  • 采集监控指标添加 cluster_uuid 信息
  • 数据看板支持配置指标排序

INFINI Agent v0.6.0

INFINI Agent 是 INFINI Console 的一个可选探针组件,负责采集和上传集群指标和日志等信息,并可通过 Console 管理。Agent 支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。

Agent 本次更新如下:

Features

  • 采集监控指标添加 cluster_uuid 信息

Improvements

  • 修复发现节点进程信息时获取不到最新集群配置的问题

期待反馈

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

或者通过 Discord 渠道加入聊天室:https://discord.com/invite/tnZ8S5vQ

欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群讨论,或者扫码加入我们的知识星球一起学习交流。

联系我们

关于极限科技(INFINI Labs)

关于极限科技

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

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

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

用极限网关实现ES容灾,简单!

Elasticsearchyangmf2040 发表了文章 • 0 个评论 • 2088 次浏览 • 2023-07-20 10:33 • 来自相关话题

身为 IT 人士,大伙身边的各种系统肯定不少吧。系统虽多,但最最最重要的那套、那几套,大伙肯定是捧在手心,关怀备至。如此重要的系统,万一发生故障了且短期无法恢复,该如何保障业务持续运行? 有过这方面思考或经验的同学,肯定脱口而出--切灾备啊。 是的,接下来我来介绍下我们的 ES 灾备方案。当然如果你有更好的,请使用各种可用的渠道联系我们。

总体设计

通过极限网关将应用对主集群的写操作,复制到灾备集群。应用发送的读请求则直接转发到主集群,并将响应结果转发给应用。应用对网关无感知,访问方式与访问 ES 集群一样。

方案优势

  • 轻量级

极限网关使用 Golang 编写,安装包很小,只有 10MB 左右,没有任何外部环境依赖,部署安装都非常简单,只需要下载对应平台的二进制可执行文件,启动网关程序的二进制程序文件执行即可。

  • 跨版本支持

极限网关针对不同的 Elasticsearch 版本做了兼容和针对性处理,能够让业务代码无缝的进行适配,后端 Elasticsearch 集群版本升级能够做到无缝过渡,降低版本升级和数据迁移的复杂度。

  • 高可用

极限网关内置多种高可用解决方案,前端请求入口支持基于虚拟 IP 的双机热备,后端集群支持集群拓扑的自动感知,节点上下线能自动发现,自动处理后端故障,自动进行请求的重试和迁移。

  • 灵活性

主备集群都是可读可写,切换迅速,只需切换网关到另一套配置即可。回切灵活,恢复使用原配置即可。

架构图

网关程序部署

下载

根据操作系统和平台选择下面相应的安装包: 解压到指定目录:

mkdir gateway
tar -zxf xxx.gz -C gateway

修改网关配置

在此 下载 网关配置,默认网关会加载配置文件 gateway.yml ,如果要指定其他配置文件使用 -config 选项指定。 网关配置文件内容较多,下面展示必要部分。

  #primary
  PRIMARY_ENDPOINT: http://192.168.56.3:7171
  PRIMARY_USERNAME: elastic
  PRIMARY_PASSWORD: password
  PRIMARY_MAX_QPS_PER_NODE: 10000
  PRIMARY_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  PRIMARY_MAX_CONNECTION_PER_NODE: 200
  PRIMARY_DISCOVERY_ENABLED: false
  PRIMARY_DISCOVERY_REFRESH_ENABLED: false
  #backup
  BACKUP_ENDPOINT: http://192.168.56.3:9200
  BACKUP_USERNAME: admin
  BACKUP_PASSWORD: admin
  BACKUP_MAX_QPS_PER_NODE: 10000
  BACKUP_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  BACKUP_MAX_CONNECTION_PER_NODE: 200
  BACKUP_DISCOVERY_ENABLED: false
  BACKUP_DISCOVERY_REFRESH_ENABLED: false

PRIMARY_ENDPOINT:配置主集群地址和端口
PRIMARY_USERNAME、PRIMARY_PASSWORD: 访问主集群的用户信息
BACKUP_ENDPOINT:配置备集群地址和端口
BACKUP_USERNAME、BACKUP_PASSWORD: 访问备集群的用户信息

运行网关

前台运行 直接运行网关程序即可启动极限网关了,如下:

./gateway-linux-amd64

后台运行

./gateway-linux-amd64 -service install
Success
./gateway-linux-amd64 -service start
Success

卸载服务

./gateway-linux-amd64 -service stop
Success
./gateway-linux-amd64 -service uninstall
Success

灾备功能测试

在灾备场景下,为保证数据一致性,对集群的访问操作都通过网关进行。注意只有 bulk API 的操作才会被复制到备集群。 在此次测试中,网关灾备配置功能为:

  • 主备集群正常时

读写请求正常执行; 写请求被记录到队列,备集群实时消费队列数据。

  • 当主集群故障时

写入请求报错,主备集群都不写入数据; 查询请求转到备集群执行,并返回结果给客户端。

  • 当备集群故障时

读写请求都正常执行; 写操作记录到磁盘队列,待备集群恢复后,自动消费队列数据直到两个集群一致。

主备集群正常时写入、查询测试

写入数据

# 通过网关写入数据
curl -X POST "localhost:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "create" : { "_index" : "test", "_id" : "2" } }
{ "field2" : "value2" }
'

查询数据

# 查询主集群
curl 192.168.56.3:7171/test/_search?pretty -uelastic:password

# 查询备集群
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

# 查询网关,网关转发给主集群执行
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

主备集群都已写入数据,且数据一致。通过网关查询,也正常返回。

删除和更新文档

# 通过网关删除和更新文档
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "delete" : { "_index" : "test", "_id" : "1" } }
{ "update" : {"_id" : "2", "_index" : "test"} }
{ "doc" : {"field2" : "value2-updated"} }
'

查询数据
# 查询主集群
curl 192.168.56.3:7171/test/_search?pretty -uelastic:password

# 查询备集群
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

两个集群都已执行删除和更新操作,数据一致。

主集群故障时写入、查询测试

为模拟主集群故障,直接关闭主集群。

写入数据

# 通过网关写入数据
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "3" } }
{ "field3" : "value3" }
{ "create" : { "_index" : "test", "_id" : "4" } }
{ "field4" : "value4" }
'

写入数据报错

查询数据

# 通过网关查询,因为主集群不可用,网关将查询转发到备集群执行
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

正常查询到数据,说明请求被转发到了备集群执行。

备集群故障时写入、查询测试

为模拟备集群故障,直接关闭备集群。

写入数据

# 通过网关写入数据
curl -X POST "192.168.56.3:18000/_bulk?pretty" -H 'Content-Type: application/json' -uelastic:password -d'
{ "index" : { "_index" : "test", "_id" : "5" } }
{ "field5" : "value5" }
{ "create" : { "_index" : "test", "_id" : "6" } }
{ "field6" : "value6" }
'

数据正常写入。

查询数据

# 通过网关查询
curl 192.168.56.3:18000/test/_search?pretty -uelastic:password

查询成功返回。主集群成功写入了两条新数据。同时此数据会被记录到备集群的队列中,待备集群恢复后,会消费此队列追数据。

恢复备集群

启动备集群。

查询数据

等待片刻或通过 INFINI Console 确定网关队列消费完毕后,查询备集群的数据。 (生产和消费 offset 相同,说明消费完毕。)

# 查询备集群的数据
curl 192.168.56.3:9200/test/_search?pretty -uadmin:admin

备集群启动后自动消费队列数据,消费完后备集群数据达到与主集群数据一致。

灾备切换

测试了这么多,终于到切换的时刻了。切换前我们判断下主系统是否短期无法修复。

如果我们判断主用系统无法短时间恢复,要执行切换。非常简单,我们直接将配置文件中定义的主备集群互换,然后重启网关程序就行了。但我们推荐在相同主机上另部署一套网关程序--网关B,先前那套用网关A指代。网关B中的配置文件把原备集群定义为主集群,原主集群定义为备集群。若要执行切换,我们先停止网关A,然后启动网关B,此时应用连接到网关(端口不变),就把原备系统当作主系统使用,把原主系统当作备系统,也就完成了主备系统的切换。

灾备回切

当原主集群修复后,正常启动,就会从消费队列追写修复期间产生数据直到主备数据一致,同样我们可通过 INFINI Console 查看消费的进度。如果大家还是担心数据的一致性,INFINI Console 还能帮大家做[校验数据]()任务,做到数据完全一致后(文档数量及文档内容一致),才进行回切。

回切也非常简单,停止网关B,启动网关A即可。

网关高可用

网关自带浮动 IP 模块,可进行双机热备。客户端通过 VIP 连接网关,网关出现故障时,VIP 漂移到备网关。 视频教程戳这里

这样的优点是简单,不足是只有一个网关在线提供服务。如果想多个网关在线提供服务,则需搭配分布式消息系统一起工作,架构如下。

前端通过负载均衡将流量分散到多个在线网关,网关将消息存入分布式消息系统。此时,网关可看作无状态应用,可根据需要扩缩规模。

以上就是我介绍的ES灾备方案,是不是相当灵活了。有问题还是那句话 Call me 。

关于极限网关

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

官网文档:https://www.infinilabs.com/docs/latest/gateway

给 ES 插上向量检索的翅膀 | DataFunSummit 2023 峰会演讲内容速达

Elasticsearchliaosy 发表了文章 • 0 个评论 • 1376 次浏览 • 2023-07-12 18:37 • 来自相关话题

近日,由 DataFun 主办的 DataFunSummit 2023 数据基础架构峰会 圆满落下帷幕,本次峰会邀请了腾讯、百度、字节、极限科技、Zilliz 等众多企业技术专家为大家带来分布式存储以及向量数据库的架构原理、性能优化与实践解析分享。

向量数据库架构与实践论坛 中,极限科技搜索引擎研发工程师张磊受邀出席做了《给 ES 插上向量检索的翅膀》的主题演讲。据介绍,本次演讲主要介绍了 Elasticsearch(ES)与向量技术的融合,展示其在不同行业中的应用场景和优势,同时也对 ES 与向量的技术细节进行详细讨论,并通过具体案例演示如何利用向量提升搜索能力。

讲师介绍

张磊,极限科技 Easysearch 引擎研发工程师,2013 年开始接触 Elasticsearch,10 余年搜索相关经验,之前主要做一些围绕 Elasticsearch 在日志检索和公安大数据相关业务的开发,对 Elasticsearch 和 Lucene 源码比较熟悉,目前专注于公司内部搜索产品的开发。

《给 ES 插上向量检索的翅膀》PPT 内容

更多 PPT 内容参见 https://elasticsearch.cn/slides/322

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。

官网文档:https://www.infinilabs.com/docs/latest/easysearch

下载地址:https://www.infinilabs.com/download

【INFINI Workshop 上海站】7 月 27 日一起动手实验玩转 Easysearch

资讯动态liaosy 发表了文章 • 1 个评论 • 1852 次浏览 • 2023-07-07 16:30 • 来自相关话题

【 INFINI Workshop 上海站】7 月 27 日下午 和 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。 活动时间:2023-07-27 13:30~17:30 活动地点:上海静安区武宁南路1号 WeWork 越商大厦 3 楼 3A 会议室 (注意:活动地址已更新,已报名小伙伴无需重新报名。) ​ 分享议题 • Easysearch 总体介绍及搭建实战 • 基于 INFINI Console 实现跨版本、跨引擎统一管控 • Elasticsearch -> Easysearch 在线迁移实操 参会提示请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机) • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console) • 下载地址:https://www.infinilabs.com/download 名额有限,对 ES 国产化感兴趣的朋友们速度报名(扫描海报中的二维码或者点击 链接 即可免费报名)。   如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系。
飞书20230719-130323.png

INFINI Easysearch 完成龙芯架构兼容性认证

Easysearchliaosy 发表了文章 • 0 个评论 • 1999 次浏览 • 2023-06-06 17:06 • 来自相关话题

近日,极限科技旗下软件产品 INFINI Easysearch 搜索引擎软件 V1.0 在龙芯中科的龙芯 3C5000L 平台上完成兼容性测试,功能与稳定性良好,并获得龙架构兼容互认证书。

龙芯是中国自主可控计算机处理器的代表品牌之一。龙芯处理器是由中国科学院计算技术研究所自主研发的一款高性能、低功耗、安全可靠的处理器。龙芯 3C5000L 是龙芯中科专门面向服务器领域的通用处理器。基于龙芯 3A5000 处理器,片上集成共 16 个高性能 LA464 处理器核,采用全新的龙芯自主指令系统(LoongArch®),在提高集成度的同时保持系统和软件与龙芯 3A5000 完全兼容。

极限科技研发的 INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。 同时也是一款具备自主可控的分布式近实时搜索型数据库产品,具备高性能、高可用、弹性伸缩、高安全性等特性,具备支持丰富的个性化搜索及聚合分析能力,可部署在物理机、虚拟机、容器、私有云和公有云,能承载 PB 级别的海量业务数据,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,可满足不同业务场景的各项复杂需求。

此次通过龙芯架构(LoongArch)的兼容性测试,有效验证了 Easysearch 对于国产化 CPU 的互操作性与可靠性。此外,Easysearch 也实现了对麒麟、统信、欧拉等国产操作系统的支持。未来,极限科技将继续加强与各大厂商的合作,深化对国产化软硬件技术栈的支持能力,为用户提供更加优质、稳定、高效、安全的搜索服务。

关于极限科技(INFINI Labs)

关于极限科技

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

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

详情参见官网:https://www.infinilabs.com

招聘搜索引擎内核研发工程师(Rust方向)

求职招聘medcl 发表了文章 • 0 个评论 • 5251 次浏览 • 2023-01-28 17:33 • 来自相关话题

Hello 大家好,开工大吉,兔年吉祥,站长来此招募小伙伴啦,加入我们一起打造下一代的实时搜索引擎。   岗位职责
  • 设计并开发下一代实时搜索引擎 ;
  • 持续优化实现方案,改进组件性能 ;
  • 保证工程质量和开发效率 。
  岗位要求
  • 3 年以上搜索引擎开发经验,计算机相关专业,本科及以上学历 ;
  • 熟练掌握 Rust/C/C++/Golang 中的一种或多种语言,有 Rust 实际开发经验者优先 ;
  • 熟悉 Linux 操作系统,了解Linux系统常用操作命令, 能基于shell编写脚本 ;
  • 熟悉 Linux 下内存管理机制,低延迟、高并发无锁化编程 ;
  • 熟悉 TCP/IP、Socket、HTTP 等网络协议 ;
  • 具有良好的沟通、团队协作能力;
  • 熟悉常见分布式算法,有大规模分布式系统开发经验优先;
  • 较好的英文阅读和写作能力,具备比较强的逻辑思维能力;
  • 良好的编码习惯和技术文档能力,具备持续输出的能力;
  • 工作地点不限 。
  加分项
  • 有自己的博客、Github、开源项目优先 ;
  • 具有相关搜索引擎开发工作经验者优先 ;
  • 熟悉各类索引结构;
  • 熟悉 LSM-Tree、B+Tree、RocksDB、LevelDB 优先 ;
  • 有较强的学习能力,愿意致力于新技术的研究 。
  更多信息请访问极限实验室官网: https://www.infinilabs.com/career/

社区日报 第504期 (2019-01-09)

社区日报elk123 发表了文章 • 0 个评论 • 3886 次浏览 • 2019-01-09 13:42 • 来自相关话题

1、基于elasticsearch站内搜索引擎实战; http://t.cn/EGr5gbR 2、基于elasticSearch的搜房网实战; http://t.cn/EGrtIi5 3、使用elasticsearch构建一个完整的搜索引擎。 http://t.cn/EGrc25K 编辑:wt 归档:https://elasticsearch.cn/article/6324 订阅:https://tinyletter.com/elastic-daily
1、基于elasticsearch站内搜索引擎实战; http://t.cn/EGr5gbR 2、基于elasticSearch的搜房网实战; http://t.cn/EGrtIi5 3、使用elasticsearch构建一个完整的搜索引擎。 http://t.cn/EGrc25K 编辑:wt 归档:https://elasticsearch.cn/article/6324 订阅:https://tinyletter.com/elastic-daily

Day22 - 熟练使用ES离做好搜索还差多远?

Adventnodexy 发表了文章 • 2 个评论 • 8448 次浏览 • 2018-12-21 17:27 • 来自相关话题

作者:杨振涛 搜索引擎架构师@vivo  首次发布:Elasticsearch中文社区 发布日期:2018-12-22

搜索引擎作为互联网发展历史中一个非常典型的产品/业务形态,时至今日并没有太大的突破性变化;主流形态可以划分为大搜、垂搜、企业级搜索和站内/app内搜索等。除了Google, Yahoo, Bing, Ask 等以及国内百度、搜狗、360、神马等是人们熟识的大搜之外,非业内人士还真不知道其他还有哪些公司以及有哪些搜索产品或业务场景。 实际上,在信息爆炸的时代,几乎每家有点儿规模的公司都或多或少要涉及到搜索引擎,最起码你需要接触SEO/SEM。本文将从非大搜企业的搜索需求出发,并基于开源技术栈来介绍和探讨搜索引擎在实践中的几个核心任务及其主要解决思路。同时为了避免重复,本文以外链形式引用了大量网络已有的国内外公开资料,方便大家参考,需要注意的是部分内容可能会随着时间推移而过期或链接失效。 提到开源搜索引擎,在Java技术栈里以Lucene, Solr/SolrCloud及Elasticsearch为代表的几个项目可能最为流行。本文的写作初衷是解答”熟练使用ES等开源搜索引擎解决方案以后,要如何才能做好搜索产品/业务?“ 希望对你有所帮助,如果你有关于此话题的更多实践经验或不同见解,欢迎留言评论交流。    1. 做好搜索引擎意味着什么?   有一位同行的文章总结了好的搜索引擎的衡量维度:
  • 相关性
  • 体验
  • 性能
其中相关性是非常重要的一个维度,这里我将通过引用一篇文章来介绍什么是”相关性工程“以及”相关性工程师“ http://www.flax.co.uk/blog/201 ... ound/ 。 相关性工程中的“相关性”,主要是指代用户的Query与索引库中的Doc之间的相关性,所以可以分别从索引数据和Query两个方面来考虑。 相关性工程考虑的第一个特征就是基于已有索引数据的文本相关度计算,通常有TF-IDF、BM25、BM25F等。Elasticsearch早期的版本默认都是TF-IDF,目前已更改为BM25。对于中文数据,分词方法和策略也会直接影响到文本相关度的计算;其次匹配方式也非常重要;最后就是基于此的相关性算分了。 相关性工程还可以考虑更多的特征,尤其是从索引数据之外来挖掘出的特征,比如索引文档的权威性、时效性、专业性、质量与口碑评分、热度与流行度等。结合NLP技术,相关性工程还可以考虑语义距离等特征,丰富召回结果。当然这些特征的处理与机器学习中的特征工程基本一致,比如涉及归一化问题、权重问题、稀疏性问题、非典型分布等等。 相关性工程考虑的另一个重要特征是用户点击反馈数据,即对于用户所看到的搜索结果列表,点击行为被看作是对当前搜索结果的一种认可,用户点了哪个位置的doc对于继续优化相关性至关重要。这两天有个著名案例就是Google的劈柴在听证会上解释为什么在Google搜索Idiot出现的都是特朗普的照片。 体验涉及的方面较多,最重要的就是产品功能和交互方面的体验了,比如一个典型的搜索产品,C端可能具备以下功能:
  • 搜索前:搜索框,搜索入口,热搜榜/飙升榜/大家都在搜,搜索发现,默认搜索词,历史搜索记录,猜你想搜,分类搜索,语音输入搜索/图片搜索; 广告位
  • 搜索中:搜索联想直达,搜索联想词,输入纠错,关键词匹配高亮
  • 搜索后:搜索结果列表,列表页推荐/广告,特形展示,列表穿插,搜了还搜,搜索详情页,详情页搜索推荐,无结果及少结果填充 ,筛选条件/筛选器,自主排序,列表样式切换(宫格 | 列表)
除了产品功能,还需要考虑搜索引擎的可运营性,比如搜索运营管理系统,至少要具备基本功能的各种黑白灰名单,包括人工干预,优化分词的自定义词典、同义词典、停用词典,以及对查询词的强制改写或者升降权;对索引内容的管控,比如对检索字段的;对召回和排序的相关参数的优化和调整等等;此外,还有配套的SEO或ASO系统,以及各种数据指标相关的看板系统。 而搜索结果中的特形展示,也是目前比较主流的产品形式,不管是自然结果还是搜索广告,都可以提供更快捷的体验,甚至一度成为知识图谱在搜索产品中应用的代表性功能。另外搜索联想中的直达服务,也是目前比较流行的,可以进一步缩短用户的操作路径,直达目标内容或服务。 更多关于产品体验和设计类问题可以参考  http://www.woshipm.com/tag/搜索功能  性能方面,搜索引擎的每一次查询理论上都是实时运算,大部分搜索引擎系统都是实时或准实时的,这就要求在用户感知上要有基本的响应时间(RT)保障,比如在国内公网环境下,200ms是比较优秀的体验,300ms-500ms是正常的体验,500ms+就需要尽快去优化。除去其中的网络I/O等开销,对于后端搜索服务的RT,一般是T99在100ms以内,T90在50ms以内,具体标准取决与当事业务和产品。除了RT,可用性也是非常重要的,一般要求99.9%以上;另外,索引数据的生效时间也很重要,比如新加入的索引,或者已有索引的更新和删除,秒级生效是比较好的体验。需要明确的一点是,这里的性能指标我们针对的是To C用户,如果是企业级搜索甚至是基于ES的一个即时查询分析系统,可能复杂查询的秒级响应也是很正常的。 延伸阅读: 阿里云-开放搜索-最佳实践-功能篇-相关性实践 https://help.aliyun.com/document_detail/29186.html  Defining relevance engineering 什么是相关性工程 http://www.flax.co.uk/blog/201 ... ound/    2. 搜索引擎是典型的机器学习问题   云计算、大数据、AI 先后成为IT与互联网行业的热点,三者经常被称为CBA或ABC技术,而这些都与一家公司密切相关,那就是 Google !   众所周知 Google 是一家著名的全球搜索引擎公司,但其产品远不止搜索引擎。从Google的三驾马车 GFS, MapReduce, BigTable开始,后来有了 Yahoo牵头的开源实现Hadoop(Hadoop最早来自于Nutch,是的,没错,就是那个开发了 Lucene 的 Doug Cutting所开源的Nutch,他被称作Hadoop之父),到后来的云计算与大数据技术蓬勃,到今天的AI热潮,各种深度学习各种NN, Google Brain,开源的Tensorflow,对Google来说这一切都是搜索引擎业务驱动的水到渠成的发展轨迹。 可以说搜索引擎是天生的机器学习问题,有着诸多的机器学习/深度学习应用场景。这里顺便DISS下一些眼高手低的迷糊党,互联网圈儿曾有人遇到求职者表示想做AI,却不做搜索不做推荐不做广告!(本人内心:你咋不上天呢!请记住AI is a buzzword. )当今的互联网或移动互联网,搜索、推荐与广告是三大典型的所谓AI应用落地方向,其他的也有但并未发展成熟,至少还没有成熟的变现模式;而这三者或多或少有些交集,搜索几乎是最基础的一个,比如推荐也需要建立索引,需要检索TOP N,搜索广告也需要做召回和排序。 如果我们把搜索引擎的核心模型简化下,其实主要是在解决三大类问题:  - 数据: 内容侧的爬虫,预处理,内容分析和理解,索引建立和存储 ;用户侧的Query理解,改写,意图识别等 - 算法/模型 :把相关性和排序等业务问题抽象为回归或分类/聚类问题,特征工程,离线训练模型,在线预测 - 策略:为满足业务需求而制定并持续优化的一系列规则、模型或模型组合、参数优化等活动,并通过工程化实现体现到线上系统,以及配套的试验和评估系统    2.1 Ranking  排序 常见的排序策略有:
  • 单维度排序:顾名思义按照单个维度来排序,没有任何复杂性可言,在召回结果集不太大的情况下实时排序即可。
  • 优先级排序:相对单维度排序而已一般是先按维度A排,当A的排序依据一样或相等时再按维度B排序,以此类推。
  • 加权排序   :针对多个维度或特征,赋予不同权重,并按求和之后的得分来排序;实践中通常会采用分层加权排序(第一层加权排序之后,得到不少于2个得分,继续加权后排序),或者分组加权排序(第一层分组来加权排序后,对所得到的得分可能按业务需求进行非求和类的运算比如乘法,再按最终得分排序)的策略。 加权排序的难点在于,如何设置并持续优化这些权重,通常会建模为典型的机器学习问题来拟合。
  • 机器学习排序 :即所谓LTR,根据用户点击或人工标注数据集建立学习目标,然后通过特征工程来挖掘与目标有关系的一系列特征,并建立学习模型,通过训练集获得模型参数,以该组参数为基准做预测,上线后再基于用户点击数据持续优化该模型的参数。LTR是一个通用方法的称谓,不是某一个具体算法的名称,具体算法名称参见下文。
排序问题可以简单抽象成为预测用户点击列表中对象的概率问题。   2.2 ES生态内的 LTR  关于LTR的理论和方法学,已经有很多论文和资料了 ( 参考 wikipedia LTR简介-微软亚研院, LTR Pairwise to Listwise ,  大规模LTR-GoogleLTR书籍 ),感兴趣的可以阅读,这里主要提供几个JAVA和ES生态的工程实现参考。 es-ltr插件  http://es-learn-to-rank.labs.o19s.com/  Set of command line tools for Learning To Rank https://github.com/SeaseLtd/ltr-tools es的ranking evaluation api https://www.elastic.co/guide/e ... .html  Java LTR类库: RankLib  https://sourceforge.net/p/lemur/wiki/RankLib/ 支持算法如下:
  • MART (Multiple Additive Regression Trees, a.k.a. Gradient boosted regression tree) 
  • RankNet 
  • RankBoost 
  • AdaRank 
  • Coordinate Ascent 
  • LambdaMART 
  • ListNet 
  • Random Forests  
延伸阅读:   2.3 典型垂搜 电商与O2O搜索 案例: 天猫,淘宝,京东,美丽说蘑菇街,有赞 ,美团点评,饿了么  阿里研究员徐盈辉:在线AI技术在搜索与推荐场景的应用 https://yq.aliyun.com/articles/107941   阿里巴巴资深算法专家三桐:人工智能在搜索中的应用 https://yq.aliyun.com/articles/288065   阿里巴巴年度技术总结 - 人工智能在搜索的应用和实践 http://www.sohu.com/a/214123235_680198  电子商务搜索系统架构参考 (京东) https://blog.csdn.net/hongseji ... 08067   电商搜索之动态属性值(特征值)聚合 (举例 京东和solr实现)  https://blog.csdn.net/hu948162 ... 80071   劈开迷雾,蘑菇街电商搜索架构及搜索排序实现 https://blog.csdn.net/huangshu ... 46694 有赞搜索引擎实践(工程篇)  https://www.cnblogs.com/hsydj/p/5303050.html 有赞搜索引擎实践(算法篇)  https://www.cnblogs.com/hsydj/p/5402945.html  有赞搜索系统的架构演进   https://tech.youzan.com/search-tech-1/    有赞搜索系统的技术内幕  https://tech.youzan.com/search-tech-2/   电商系统如何做搜索引擎? https://blog.csdn.net/zysgdhf4 ... 53999   电商检索系统总结——功能篇 https://www.cnblogs.com/wanghuaijun/p/7112952.html  App搜索  案例:Google Play, 应用宝,各种手机助手,Apple App Store及各大其他手机厂商的应用商店/应用市场以及互联网电视/机顶盒等的应用商店/应用市场     3. 搜索引擎的效果评价 我们在团队内有句戏言:看一个搜索团队是否专业,就看他们是否做效果评价。 在与国内外的搜索工程师交流和学习过程中,还有一个说法是:搜素引擎的优化就像一个打地鼠游戏,你解决一类bad case的同时很难确认其是否会带来新的bad case以及会带来多少。 需要区别的是,搜索引擎中使用到的机器学习/深度学习算法本身的效果评估(如分类算法的Accuracy、Precision、Recall、F1、ROC、AUC 等)并不能直接代替搜索引擎的效果评价。通常我们分为人工主观评测和业务指标评测。 参考:   4. NLP 自然语言处理 我们知道搜索引擎的上游学科是信息检索(IR),这也是搜索引擎的理论基础。而自然语言处理(NLP)在信息检索领域尤其是搜索引擎中有着至关重要的地位和作用。一方面我们对于被搜索的内容数据的理解,需要借助NLP来提升语义性和智能程度,另一方面我们对于用户Query和意图的理解,也需要借助NLP相关方法和技术来完成。 实际上ES的很多特性已经非常强大, 可以作为基本的文本分析和挖掘工具使用,这也是解释了ES官方博客以及其他博客有分享一些文章,主题是关于使用ES来进行文本分类或者实现推荐系统。 总结一下,想要做好一个典型的搜索引擎产品,除了熟练使用ES,还需要考虑搜索产品的功能完备性、体验优劣、性能以及相关性,而相关性涉及对内容数据的理解和挖掘、对用户Query的理解和意图识别,以及检索过程中的特征选取和权重优化、算分、排序,最后是比较重要的效果评价。这个过程中NLP的应用也非常多,除了基本的分词,还可能涉及非必留、词性识别、纠错、繁简体、多语言、文本向量化及语义距离计算等。 最后推荐一本搜索必读书籍—— 吴军的《数学之美》第二版 https://book.douban.com/subject/26163454/    第1 章 文字和语言 vs 数字和信息 第2 章 自然语言处理 — 从规则到统计 第3 章 统计语言模型 第4 章 谈谈分词 第5 章 隐含马尔可夫模型 第6 章 信息的度量和作用 第7 章 贾里尼克和现代语言处理 第8 章 简单之美 — 布尔代数和搜索引擎 第9 章 图论和网络爬虫 第10章 PageRank — Google的民主表决式网页排名技术 第11章 如何确定网页和查询的相关性 第12章 有限状态机和动态规划 — 地图与本地 第13章 Google AK-47 的设计者 — 阿米特· 辛格博士 第14章 余弦定理和新闻的分类 第15章 矩阵运算和文本处理中的两个分类问题 第16章 信息指纹及其应用 第17章 由电视剧《暗算》所想到的 — 谈谈密码学的数学原理 第18章 闪光的不一定是金子 — 谈谈搜索引擎 第19章 谈谈数学模型的重要性 第20章 不要把鸡蛋放到一个篮子里 — 谈谈最 第21章 拼音输入法的数学原理 第22章 自然语言处理的教父马库斯和他的优秀弟子们 第23章 布隆过滤器 第24章 马尔可夫链的扩展 — 贝叶斯网络 第25章 条件随机场、文法分析及其他 第26章 维特比和他的维特比算法 第27章 上帝的算法 — 期望最大化算法 第28章 逻辑回归和搜索广告 第29章 各个击破算法和Google 云计算的基础 第30章 Google 大脑和人工神经网络 第31章 大数据的威力——谈谈数据的重要性          

高薪聘请ES(elasticsearch)搜索研发工程师

求职招聘mao13868891931 发表了文章 • 2 个评论 • 5930 次浏览 • 2018-06-07 17:49 • 来自相关话题

微信:13868891931
微信:13868891931