Elasticsearch Graph Explore API 深度解析
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返回包含两个主要部分:
vertices
: 所有发现的顶点数组,包含字段、术语、权重和深度信息connections
: 顶点间的连接关系,包含源/目标索引、权重和文档计数
最佳实践
- 对于初步探索,使用默认设置快速获取"大图"
- 对于深入分析,逐步调整参数:
- 增大sample_size获取更多结果
- 调整min_doc_count过滤噪声
- 使用sample_diversity确保结果多样性
- 通过多次请求实现渐进式探索,每次基于前次结果扩展
注意事项
- 图探索API默认启用,可通过
xpack.graph.enabled: false
禁用 - 大型数据集上可能需要调整timeout参数
- 结果相关性依赖于数据质量和参数设置
通过合理使用Graph Explore API,您可以发现数据中隐藏的模式和关系,为业务决策提供有价值的洞察。
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考