Elasticsearch Graph Explore API 深度解析

Elasticsearch Graph Explore API 深度解析

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

概述

Elasticsearch Graph Explore API 是一个强大的工具,它允许用户从数据流或索引中提取和汇总文档与术语之间的关系信息。这个API特别适合用于发现数据中隐藏的关联模式和潜在联系。

核心概念

1. 顶点(Vertices)

顶点代表索引中的术语(terms),是图结构中的基本节点。例如,在电商数据中,产品ID和搜索关键词都可以作为顶点。

2. 连接(Connections)

连接表示顶点之间的关系,描述了两个术语在文档中的共现情况。连接的强度通过权重(weight)和文档计数(doc_count)来衡量。

3. 跳数(Hop Depth)

跳数表示顶点与起始查询点的距离。例如,直接与查询匹配的顶点深度为0,通过一次连接发现的顶点深度为1。

API 使用方法

基本请求格式

POST <索引名称>/_graph/explore
{
  "query": {...},
  "vertices": [...],
  "connections": {...},
  "controls": {...}
}

关键参数详解

查询(query)

种子查询用于识别感兴趣的初始文档集。可以使用任何有效的Elasticsearch查询。

示例:

"query": {
  "bool": {
    "must": {"match": {"query.raw": "midi"}},
    "filter": [{"range": {"query_time": {"gte": "2015-10-01"}}}]
  }
}
顶点配置(vertices)

定义图中包含哪些字段的术语作为顶点。

重要属性:

  • field: 指定字段名
  • include: 显式包含的术语列表
  • exclude: 排除的术语列表
  • size: 每个字段返回的最大顶点数(默认5)
  • min_doc_count: 术语对的最小文档数阈值(默认3)
连接配置(connections)

定义如何探索顶点之间的关系。

可以嵌套配置以实现多跳探索:

"connections": {
  "vertices": [{"field": "query.raw"}],
  "connections": {
    "vertices": [{"field": "category"}]
  }
}
控制参数(controls)

调整图构建的行为:

  • use_significance: 是否只包含显著相关的术语(默认true)
  • sample_size: 每跳考虑的文档样本大小(默认100)
  • timeout: 执行超时时间(毫秒)
  • sample_diversity: 确保样本多样性

典型使用场景

1. 基础探索

从特定查询开始,发现相关联的术语:

POST clicklogs/_graph/explore
{
  "query": {"match": {"query.raw": "midi"}},
  "vertices": [{"field": "product"}],
  "connections": {
    "vertices": [{"field": "query.raw"}]
  }
}

2. 精细控制探索

调整各种参数以获得更精确的结果:

{
  "controls": {
    "use_significance": false,
    "sample_size": 2000,
    "timeout": 2000
  },
  "vertices": [
    {
      "field": "product",
      "size": 5,
      "min_doc_count": 10
    }
  ]
}

3. 蜘蛛式扩展探索

从已知顶点出发,发现新的关联:

{
  "vertices": [
    {
      "field": "product",
      "include": ["1854873"]
    }
  ],
  "connections": {
    "vertices": [
      {
        "field": "query.raw",
        "exclude": ["midi keyboard", "midi"]
      }
    ]
  }
}

结果解析

API返回包含两个主要部分:

  1. vertices: 所有发现的顶点数组,包含字段、术语、权重和深度信息
  2. connections: 顶点间的连接关系,包含源/目标索引、权重和文档计数

最佳实践

  1. 对于初步探索,使用默认设置快速获取"大图"
  2. 对于深入分析,逐步调整参数:
    • 增大sample_size获取更多结果
    • 调整min_doc_count过滤噪声
    • 使用sample_diversity确保结果多样性
  3. 通过多次请求实现渐进式探索,每次基于前次结果扩展

注意事项

  1. 图探索API默认启用,可通过xpack.graph.enabled: false禁用
  2. 大型数据集上可能需要调整timeout参数
  3. 结果相关性依赖于数据质量和参数设置

通过合理使用Graph Explore API,您可以发现数据中隐藏的模式和关系,为业务决策提供有价值的洞察。

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍妲葵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值