📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

提到 INFINI Easysearch,大多数人的第一反应是:“哦,那个存日志很省钱的数据库。”

确实,Easysearch 凭借 ZSTD 压缩和高吞吐写入,在日志分析场景大杀四方。但不要忘了,它的内核是 Apache Lucene——这个星球上最强大的全文检索库。这意味着,Easysearch 天生就是为了解决**“搜索”**问题而生的。

从企业门户的站内搜索,到千万级商品的电商检索,Easysearch 都能提供毫秒级的响应体验。本文将探讨它在业务侧的应用实践。

场景一:智能站内搜索(内容/CMS/知识库) #

传统的数据库(MySQL/PostgreSQL)使用 LIKE %keyword% 进行模糊查询,不仅性能差(无法走索引),而且不懂“语义”。

Easysearch 能为企业门户、文档中心或 CMS 系统提供类似百度的搜索体验。

1. 中文分词与拼音纠错 #

中文搜索的核心痛点是分词。Easysearch 原生兼容 IK Analysis(IK分词器)和 Pinyin(拼音分词器)。

  • 混合搜索:用户输入 “pinguo” 或 “pg”,依然能搜到 “苹果手机”。
  • 同义词扩展:搜 “自行车”,能自动关联出 “单车” 或 “Bike”。

2. 搜索建议(Suggesters)与自动补全 #

提升用户体验的关键在于“边打字边提示”。

  • 利用 Easysearch 的 Completion Suggester,可以在用户输入前缀时,毫秒级返回补全建议。
  • 代码示例
POST /articles/_search
{
  "suggest": {
    "article-suggest": {
      "prefix": "人工智",
      "completion": {
        "field": "title.suggest"
      }
    }
  }
}
// 返回:["人工智能", "人工智能应用", "人工智能发展趋势"]

3. 高亮显示(Highlighting) #

自动提取文档中匹配的片段,并给关键词加上 <em> 标签,方便前端标红显示。

场景二:电商商品检索(E-commerce) #

电商搜索是技术含量最高的场景之一,它要求高并发(扛得住双11)、多维度过滤(筛选)和智能排序(算分)。

1. 多面搜索(Faceted Search)与聚合 #

用户在淘宝/京东搜索时,左侧或顶部的“品牌”、“价格区间”、“颜色”筛选器,本质上就是 Easysearch 的 Aggregations(聚合)

  • 动态过滤:搜索“手机”时,聚合出“华为”、“小米”;搜索“连衣裙”时,聚合出“材质”、“裙长”。Easysearch 支持嵌套聚合,轻松处理 SKU 级的复杂属性。

2. 智能排序(Function Score) #

电商不仅仅是把商品找出来,更要把“好”商品排前面。

  • 自定义打分:使用 function_score 查询,结合全文相关性(BM25)和商业属性(销量、库存、利润率)。
  • 示例逻辑:最终得分 = 关键词匹配分 × log(销量) × (如果是新品 ? 1.5 : 1.0)。
GET /products/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "name": "跑鞋"
        }
      },
      "functions": [
        {
          "field_value_factor": {
            "field": "sales_volume",
            "modifier": "log1p",
            "factor": 1.2
          }
        },
        {
          "filter": {
            "term": {
              "is_promoted": true
            }
          },
          "weight": 2
        }
      ],
      "boost_mode": "multiply"
    }
  }
}

3. 库存实时更新 #

电商对数据实时性要求极高。Easysearch 的 NRT(Near Real-Time) 特性,配合局部更新(Partial Update)接口,可以在秒级内同步库存变化,防止超卖。

Easysearch 2.0 引入了原生的向量检索能力,这为业务搜索带来了质变。

  • 以图搜图:用户上传一张衣服照片,Easysearch 通过向量检索在库中找到相似款。
  • 语义搜索:用户搜“夏天穿的凉快衣服”,传统关键词匹配可能失效(因为商品标题没写“凉快”),但向量检索能理解其语义,召回“真丝连衣裙”或“透气T恤”。
  • 混合排序(Hybrid Rerank):先用向量召回语义相关的,再用 BM25 匹配精确关键词,最后用业务逻辑重排序,实现搜索效果的最优解。

集成方式:对开发者零门槛 #

将 Easysearch 集成到现有的 Java/Go/Python 业务系统中非常简单,因为它完全兼容 Elasticsearch 的客户端生态

1. 架构模式 #

  • 直连模式APP Server -> Easysearch VIP
  • 网关模式(推荐)APP Server -> INFINI Gateway -> Easysearch
  • 优势:Gateway 可以做查询缓存(Query Cache),对于热门商品搜索(如“iPhone”),直接返回缓存结果,无需穿透到数据库,极大提升 QPS。

2. 开发 SDK #

  • Java:直接使用 Spring Data Elasticsearch 或官方 RestHighLevelClient
  • Go:使用 olivere/elastic 或官方 go-elasticsearch
  • Python:使用 elasticsearch-py

只需在配置文件中将连接地址指向 Easysearch 即可,无需修改一行代码

为何业务搜索选择 Easysearch? #

相比于传统数据库或原版 ES,Easysearch 在业务场景有独特优势:

  1. 更稳的 P99 延迟:针对高并发读取做了优化,配合堆外内存技术,极大减少了 GC 导致的查询卡顿(Jitter),保证 C 端用户的丝滑体验。
  2. 更低的硬件成本:电商商品数据往往包含大量描述文本。Easysearch 的 ZSTD 压缩能节省一半存储空间,不仅省钱,更让热数据能更多地加载进内存(Page Cache),变相提升查询速度。
  3. 安全兜底:内置的查询断路器能自动拦截恶意的高消耗查询(如深度翻页),防止在大促期间因为某个异常请求拖垮整个集群。

结语 #

Easysearch 不仅仅是运维人员手中的日志分析工具,它更是架构师手中的全能搜索底座

无论是构建一个企业内部的知识库,还是支撑一个高并发的电商平台,Easysearch 都能以极高的性价比和稳定性,提供专业的全文检索与数据分析能力。从日志到业务,Easysearch 实现了企业数据价值的全链路覆盖。